Explorar o código

作者:张哲
时间:2023/01/17
类型:修改bug(里程碑1)
描述:知识分类部分

ZizgZh %!s(int64=2) %!d(string=hai) anos
pai
achega
67f2fda1ce

+ 2 - 1
src/main/java/com/redxun/knowledge/entity/dao/Knowledge.java

@@ -12,6 +12,7 @@ package com.redxun.knowledge.entity.dao;
 
 import com.baomidou.mybatisplus.annotation.*;
 import com.fasterxml.jackson.annotation.JsonCreator;
+import com.mysql.cj.jdbc.Clob;
 import com.redxun.common.base.entity.BaseExtEntity;
 import lombok.Getter;
 import lombok.Setter;
@@ -54,7 +55,7 @@ public class Knowledge  extends BaseExtEntity<java.lang.String> {
     private String author;
     //知识内容
     @TableField(value = "CONTENT")
-    private String content;
+    private Clob content;
     //附件ID
     @TableField(value = "ATTACHMENT")
     private String attachment;

+ 2 - 1
src/main/java/com/redxun/knowledge/entity/dto/KnowledgeDto.java

@@ -1,6 +1,7 @@
 package com.redxun.knowledge.entity.dto;
 
 import com.fasterxml.jackson.annotation.JsonCreator;
+import com.mysql.cj.jdbc.Clob;
 import lombok.Data;
 
 import javax.validation.constraints.NotBlank;
@@ -26,7 +27,7 @@ public class KnowledgeDto {
     private String summary;
 
     // 知识内容
-    private String content;
+    private Clob content;
 
     // 附件ID
     // @NotBlank(message = "缺失关键参数:文件ID")

+ 2 - 1
src/main/java/com/redxun/knowledge/entity/vo/KnowledgeVo.java

@@ -3,6 +3,7 @@ package com.redxun.knowledge.entity.vo;
 import com.alibaba.fastjson.annotation.JSONField;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.mysql.cj.jdbc.Clob;
 import com.redxun.knowledge.entity.dao.KnowledgeApprove;
 import lombok.Data;
 import org.springframework.format.annotation.DateTimeFormat;
@@ -42,7 +43,7 @@ public class KnowledgeVo {
     private String author;
 
     // 知识内容
-    private String content;
+    private Clob content;
 
     // 简介
     private String summary;

+ 70 - 40
src/main/java/com/redxun/knowledge/service/KnowledgeServiceImpl.java

@@ -35,8 +35,10 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
+import com.mysql.cj.jdbc.Clob;
 
 import javax.annotation.Resource;
+import javax.sql.rowset.serial.SerialClob;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -104,7 +106,7 @@ public class KnowledgeServiceImpl extends SuperServiceImpl<KnowledgeMapper, Know
      * @return
      */
     @Transactional(rollbackFor = Exception.class)
-    public String create(KnowledgeDto knowledgeDto) {
+    public String create(KnowledgeDto knowledgeDto){
         if (knowledgeDto != null) {
             Knowledge knowledge = new Knowledge();
             knowledge.setPkId(IdGenerator.getIdStr());
@@ -560,48 +562,76 @@ public class KnowledgeServiceImpl extends SuperServiceImpl<KnowledgeMapper, Know
      */
     public IPage getAllKnowledgeByCategoryId(QueryFilter filter) {
         Map<String, Object> params = PageHelper.constructParams(filter);
-        IPage page = knowledgeMapper.getAllKnowledgeByCategoryId(filter.getPage(), filter.getParams(), params);
-        List<KnowledgeVo> knowledgeVoList = page.getRecords();
-        knowledgeVoList.forEach(e -> {
-            KnowledgeCategoryAdminVo knowledgeCategoryAdminVo = knowledgeCategoryService.findAllParentByCategoryId(e.getCategoryId());
-            e.setKnowledgeCategoryAdminVo(knowledgeCategoryAdminVo);
-        });
-        List<KnowledgeVo> result = new ArrayList<>(knowledgeVoList);
-        knowledgeVoList.forEach(e -> {
-            //把一级分类下的分类的知识加入返回结果集
-            KnowledgeCategory knowledgeCategory = knowledgeCategoryMapper.selectById(e.getCategoryId());
-            KnowledgeCategoryAdminVo knowledgeCategoryAdminVo = new KnowledgeCategoryAdminVo();
-            BeanUtils.copyProperties(knowledgeCategory,knowledgeCategoryAdminVo);
-            knowledgeCategoryAdminVo.setLevel(1);
-            List<KnowledgeCategoryAdminVo> childrens = knowledgeCategoryService.findChildrens(knowledgeCategoryAdminVo);
-            childrens.forEach(children -> {
-                List<Knowledge> knowledgeList = this.baseMapper.selectList(new QueryWrapper<Knowledge>().eq("CATEGORY_ID", children.getPkId()));
-                List<KnowledgeVo> collect = knowledgeList.stream().map(h -> {
-                    KnowledgeVo knowledgeVo = new KnowledgeVo();
-                    BeanUtils.copyProperties(h, knowledgeVo);
-                    return knowledgeVo;
-                }).collect(Collectors.toList());
 
-                collect.forEach(g -> {
-                    KnowledgeCategoryAdminVo knowledgeCategoryAdminVos = knowledgeCategoryService.findAllParentByCategoryId(g.getCategoryId());
-                    g.setKnowledgeCategoryAdminVo(knowledgeCategoryAdminVos);
-                });
 
-                result.addAll(collect);
+        // 工作成果下的知识
+        String keyword = (String) filter.getParams().get("keyword");
+        if (keyword.equals("working")){
+            Map<String, Object> map = new HashMap<>();
+            map.put("categoryId","40");
+            filter.setParams(map);
+            IPage page = knowledgeMapper.getAllKnowledgeByCategoryId(filter.getPage(), filter.getParams(), params);
+            List<KnowledgeVo> collect = page.getRecords();
+            collect.forEach(g -> {
+                KnowledgeCategoryAdminVo knowledgeCategoryAdminVos = knowledgeCategoryService.findAllParentByCategoryId(g.getCategoryId());
+                g.setKnowledgeCategoryAdminVo(knowledgeCategoryAdminVos);
             });
-        });
-        // 按照浏览量降序排序
-        List<KnowledgeVo> collect = result.stream().
-                sorted((t1, t2) -> t2.getViews().compareTo(t1.getViews())).
-                map(e -> {
-                    Map<String, Object> map = userService.querySexAndPhoto(e.getCreateBy());
-                    e.setParams(map);
-                    return e;
-                }).
-                collect(Collectors.toList());
-        page.setRecords(collect);
-        page.setTotal(collect.size());
-        return page;
+            return page;
+        } else {
+            Map<String, Object> map = new HashMap<>();
+            map.put("categoryId","50");
+            filter.setParams(map);
+            IPage page = knowledgeMapper.getAllKnowledgeByCategoryId(filter.getPage(), filter.getParams(), params);
+            List<KnowledgeVo> collect = page.getRecords();
+            collect.forEach(g -> {
+                KnowledgeCategoryAdminVo knowledgeCategoryAdminVos = knowledgeCategoryService.findAllParentByCategoryId(g.getCategoryId());
+                g.setKnowledgeCategoryAdminVo(knowledgeCategoryAdminVos);
+            });
+            return page;
+        }
+
+
+        //List<KnowledgeVo> knowledgeVoList = page.getRecords();
+        //knowledgeVoList.forEach(e -> {
+        //    KnowledgeCategoryAdminVo knowledgeCategoryAdminVo = knowledgeCategoryService.findAllParentByCategoryId(e.getCategoryId());
+        //    e.setKnowledgeCategoryAdminVo(knowledgeCategoryAdminVo);
+        //});
+        //List<KnowledgeVo> result = new ArrayList<>(knowledgeVoList);
+        //knowledgeVoList.forEach(e -> {
+        //    //把一级分类下的分类的知识加入返回结果集
+        //    KnowledgeCategory knowledgeCategory = knowledgeCategoryMapper.selectById(e.getCategoryId());
+        //    KnowledgeCategoryAdminVo knowledgeCategoryAdminVo = new KnowledgeCategoryAdminVo();
+        //    BeanUtils.copyProperties(knowledgeCategory,knowledgeCategoryAdminVo);
+        //    knowledgeCategoryAdminVo.setLevel(1);
+        //    List<KnowledgeCategoryAdminVo> childrens = knowledgeCategoryService.findChildrens(knowledgeCategoryAdminVo);
+        //    childrens.forEach(children -> {
+        //        List<Knowledge> knowledgeList = this.baseMapper.selectList(new QueryWrapper<Knowledge>().eq("CATEGORY_ID", children.getPkId()));
+        //        List<KnowledgeVo> collect = knowledgeList.stream().map(h -> {
+        //            KnowledgeVo knowledgeVo = new KnowledgeVo();
+        //            BeanUtils.copyProperties(h, knowledgeVo);
+        //            return knowledgeVo;
+        //        }).collect(Collectors.toList());
+        //
+        //        collect.forEach(g -> {
+        //            KnowledgeCategoryAdminVo knowledgeCategoryAdminVos = knowledgeCategoryService.findAllParentByCategoryId(g.getCategoryId());
+        //            g.setKnowledgeCategoryAdminVo(knowledgeCategoryAdminVos);
+        //        });
+        //
+        //        result.addAll(collect);
+        //    });
+        //});
+        //// 按照浏览量降序排序
+        //List<KnowledgeVo> collect = result.stream().
+        //        sorted((t1, t2) -> t2.getViews().compareTo(t1.getViews())).
+        //        map(e -> {
+        //            Map<String, Object> map = userService.querySexAndPhoto(e.getCreateBy());
+        //            e.setParams(map);
+        //            return e;
+        //        }).
+        //        collect(Collectors.toList());
+        //page.setRecords(collect);
+        //page.setTotal(collect.size());
+        // return page;
     }
 
     /**

+ 101 - 85
src/main/resources/mapper/knowledge/KnowledgeMapper.xml

@@ -3,33 +3,35 @@
 <mapper namespace="com.redxun.knowledge.mapper.KnowledgeMapper">
 
     <resultMap id="Knowledge" type="com.redxun.knowledge.entity.dao.Knowledge">
-                <id property="pkId" column="PK_ID" jdbcType="VARCHAR"/>
-                <result property="categoryId" column="CATEGORY_ID" jdbcType="VARCHAR"/>
-                <result property="titles" column="TITLES" jdbcType="VARCHAR"/>
-                <result property="type" column="TYPE" jdbcType="INTEGER"/>
-                <result property="summary" column="SUMMARY" jdbcType="VARCHAR"/>
-                <result property="views" column="VIEWS" jdbcType="INTEGER"/>
-                <result property="author" column="AUTHOR" jdbcType="VARCHAR"/>
-                <result property="content" column="CONTENT" jdbcType="VARCHAR"/>
-                <result property="attachment" column="ATTACHMENT" jdbcType="VARCHAR"/>
-                <result property="attachmentName" column="ATTACHMENT_NAME" jdbcType="VARCHAR"/>
-                <result property="attachmentType" column="ATTACHMENT_TYPE" jdbcType="INTEGER"/>
-                <result property="approvalStatus" column="APPROVAL_STATUS" jdbcType="INTEGER"/>
-                <result property="approvalBatch" column="APPROVAL_BATCH" jdbcType="INTEGER"/>
-                <result property="organizationId" column="ORGANIZATION_ID" jdbcType="VARCHAR"/>
-                <result property="isDel" column="IS_DEL" jdbcType="INTEGER"/>
-                <result property="companyId" column="COMPANY_ID_" jdbcType="VARCHAR"/>
-                <result property="createDepId" column="CREATE_DEP_ID_" jdbcType="VARCHAR"/>
-                <result property="tenantId" column="TENANT_ID_" jdbcType="VARCHAR"/>
-                <result property="createBy" column="CREATE_BY_" jdbcType="VARCHAR"/>
-                <result property="createTime" column="CREATE_TIME_" jdbcType="DATE"/>
-                <result property="updateBy" column="UPDATE_BY_" jdbcType="VARCHAR"/>
-                <result property="updateTime" column="UPDATE_TIME_" jdbcType="DATE"/>
-                <result property="documentId" column="DOCUMENT_ID" jdbcType="DATE"/>
+        <id property="pkId" column="PK_ID" jdbcType="VARCHAR"/>
+        <result property="categoryId" column="CATEGORY_ID" jdbcType="VARCHAR"/>
+        <result property="titles" column="TITLES" jdbcType="VARCHAR"/>
+        <result property="type" column="TYPE" jdbcType="INTEGER"/>
+        <result property="summary" column="SUMMARY" jdbcType="VARCHAR"/>
+        <result property="views" column="VIEWS" jdbcType="INTEGER"/>
+        <result property="author" column="AUTHOR" jdbcType="VARCHAR"/>
+        <result property="content" column="CONTENT" jdbcType="CLOB"
+                typeHandler="org.apache.ibatis.type.ClobTypeHandler"/>
+        <result property="attachment" column="ATTACHMENT" jdbcType="VARCHAR"/>
+        <result property="attachmentName" column="ATTACHMENT_NAME" jdbcType="VARCHAR"/>
+        <result property="attachmentType" column="ATTACHMENT_TYPE" jdbcType="INTEGER"/>
+        <result property="approvalStatus" column="APPROVAL_STATUS" jdbcType="INTEGER"/>
+        <result property="approvalBatch" column="APPROVAL_BATCH" jdbcType="INTEGER"/>
+        <result property="organizationId" column="ORGANIZATION_ID" jdbcType="VARCHAR"/>
+        <result property="isDel" column="IS_DEL" jdbcType="INTEGER"/>
+        <result property="companyId" column="COMPANY_ID_" jdbcType="VARCHAR"/>
+        <result property="createDepId" column="CREATE_DEP_ID_" jdbcType="VARCHAR"/>
+        <result property="tenantId" column="TENANT_ID_" jdbcType="VARCHAR"/>
+        <result property="createBy" column="CREATE_BY_" jdbcType="VARCHAR"/>
+        <result property="createTime" column="CREATE_TIME_" jdbcType="DATE"/>
+        <result property="updateBy" column="UPDATE_BY_" jdbcType="VARCHAR"/>
+        <result property="updateTime" column="UPDATE_TIME_" jdbcType="DATE"/>
+        <result property="documentId" column="DOCUMENT_ID" jdbcType="DATE"/>
     </resultMap>
 
     <sql id="COLUMNS">
-        PK_ID,CATEGORY_ID,TITLES,TYPE,SUMMARY,VIEWS,AUTHOR,CONTENT,ATTACHMENT,
+        PK_ID
+        ,CATEGORY_ID,TITLES,TYPE,SUMMARY,VIEWS,AUTHOR,CONTENT,ATTACHMENT,
         ATTACHMENT_NAME,ATTACHMENT_TYPE,APPROVAL_STATUS,APPROVAL_BATCH,ORGANIZATION_ID,IS_DEL,
         COMPANY_ID_,CREATE_DEP_ID_,TENANT_ID_,CREATE_BY_,CREATE_TIME_,UPDATE_BY_,UPDATE_TIME_,DOCUMENT_ID
     </sql>
@@ -48,67 +50,68 @@
             ORDER BY ${w.orderBySql}
         </if>
         <if test="@rx.Ognl@isEmpty(w.orderBySql)">
-            ORDER BY  PK_ID DESC
+            ORDER BY PK_ID DESC
         </if>
     </select>
 
     <select id="findAllKnowledge" resultType="com.redxun.knowledge.entity.vo.KnowledgeVo">
-    SELECT
-    <include refid="COLUMNS" />
-    FROM KM_KNOWLEDGE
-    <where>
-        <if test="@rx.Ognl@isNotEmpty(params.keyword)">
-            (TITLES LIKE '%' || #{params.keyword} || '%' OR
-            TYPE LIKE '%' || #{params.keyword} || '%' OR
-            SUMMARY LIKE '%' || #{params.keyword} || '%')
-        </if>
-        <if test="@rx.Ognl@isNotEmpty(params.titles)">
-            and TITLES LIKE '%' || #{params.titles} || '%'
-        </if>
-        <if test="@rx.Ognl@isNotEmpty(params.categoryId)">
-            and CATEGORY_ID = #{params.categoryId}
-        </if>
-        <if test="@rx.Ognl@isNotEmpty(params.type)">
-            and TYPE = #{params.type}
-        </if>
-        <if test="@rx.Ognl@isNotEmpty(params.author)">
-            and AUTHOR LIKE '%' || #{params.author} || '%'
-        </if>
-        <if test="@rx.Ognl@isNotEmpty(params.beginTime)">
-            and TO_CHAR(CREATE_TIME_,'yyyy-mm-dd') &gt;= #{params.beginTime}
-        </if>
-        <if test="@rx.Ognl@isNotEmpty(params.endTime)">
-            and TO_CHAR(CREATE_TIME_,'yyyy-mm-dd') &lt;= #{params.endTime}
-        </if>
-        <if test="@rx.Ognl@isNotEmpty(params.approvalStatus)">
-            and APPROVAL_STATUS = 5
-        </if>
-        <if test="@rx.Ognl@isNotEmpty(params.isNotAudit)">
-            and APPROVAL_STATUS != 5
-        </if>
-        <if test="@rx.Ognl@isNotEmpty(params.createBy)">
-            and CREATE_BY_ = #{params.createBy}
-        </if>
-        and IS_DEL = 0
-    </where>
+        SELECT
+        <include refid="COLUMNS"/>
+        FROM KM_KNOWLEDGE
+        <where>
+            <if test="@rx.Ognl@isNotEmpty(params.keyword)">
+                (TITLES LIKE '%' || #{params.keyword} || '%' OR
+                TYPE LIKE '%' || #{params.keyword} || '%' OR
+                SUMMARY LIKE '%' || #{params.keyword} || '%')
+            </if>
+            <if test="@rx.Ognl@isNotEmpty(params.titles)">
+                and TITLES LIKE '%' || #{params.titles} || '%'
+            </if>
+            <if test="@rx.Ognl@isNotEmpty(params.categoryId)">
+                and CATEGORY_ID = #{params.categoryId}
+            </if>
+            <if test="@rx.Ognl@isNotEmpty(params.type)">
+                and TYPE = #{params.type}
+            </if>
+            <if test="@rx.Ognl@isNotEmpty(params.author)">
+                and AUTHOR LIKE '%' || #{params.author} || '%'
+            </if>
+            <if test="@rx.Ognl@isNotEmpty(params.beginTime)">
+                and TO_CHAR(CREATE_TIME_,'yyyy-mm-dd') &gt;= #{params.beginTime}
+            </if>
+            <if test="@rx.Ognl@isNotEmpty(params.endTime)">
+                and TO_CHAR(CREATE_TIME_,'yyyy-mm-dd') &lt;= #{params.endTime}
+            </if>
+            <if test="@rx.Ognl@isNotEmpty(params.approvalStatus)">
+                and APPROVAL_STATUS = 5
+            </if>
+            <if test="@rx.Ognl@isNotEmpty(params.isNotAudit)">
+                and APPROVAL_STATUS != 5
+            </if>
+            <if test="@rx.Ognl@isNotEmpty(params.createBy)">
+                and CREATE_BY_ = #{params.createBy}
+            </if>
+            and IS_DEL = 0
+        </where>
         ORDER BY
         <if test="@rx.Ognl@isNotEmpty(w.orderBySql)">
             ${w.orderBySql},
         </if>
-     CREATE_TIME_ DESC
+        CREATE_TIME_ DESC
     </select>
 
     <delete id="deleteKnowledge">
         update KM_KNOWLEDGE
-        SET
-            IS_DEL = 1,UPDATE_TIME_ = sysdate
+        SET IS_DEL       = 1,
+            UPDATE_TIME_ = sysdate
         where PK_ID = #{pkId}
     </delete>
 
     <select id="findAllAuditKnowledge" resultType="com.redxun.knowledge.entity.vo.KnowledgeVo">
         SELECT
-        k.PK_ID,k.CATEGORY_ID,k.TITLES,k.TYPE,k.SUMMARY,k.VIEWS,k.AUTHOR,k.CONTENT,k.ATTACHMENT,ka.APPROVER_ID,ka.RESULT,ka.sort as sort,
-               ka.PK_ID AS approveId,
+        k.PK_ID,k.CATEGORY_ID,k.TITLES,k.TYPE,k.SUMMARY,k.VIEWS,k.AUTHOR,k.CONTENT,k.ATTACHMENT,ka.APPROVER_ID,ka.RESULT,ka.sort
+        as sort,
+        ka.PK_ID AS approveId,
         ka.KNOWLEDGER_ID,ka.ACTUAL_APPROVER,ka.ACTUAL_APPROVER_NAME,ka.APPROVAL_TIME,ka.APPROVER_NAME as approverName,
         k.ATTACHMENT_NAME,k.ATTACHMENT_TYPE,k.APPROVAL_STATUS,k.APPROVAL_BATCH,k.ORGANIZATION_ID,k.IS_DEL,
         k.COMPANY_ID_,k.CREATE_DEP_ID_,k.TENANT_ID_,k.CREATE_BY_,k.CREATE_TIME_,k.UPDATE_BY_,k.UPDATE_TIME_,k.DOCUMENT_ID
@@ -140,24 +143,15 @@
         ORDER BY ka.CREATE_TIME_ DESC,ka.SORT ASC
     </select>
 
-    <select id="getAllKnowledgeByCategoryId" resultType="com.redxun.knowledge.entity.vo.KnowledgeVo">
+    <select id="getAllKnowledgeByCategoryId" parameterType="string" resultType="com.redxun.knowledge.entity.vo.KnowledgeVo">
         SELECT
         <include refid="COLUMNS" />
-        FROM KM_KNOWLEDGE
-        <where>
-            <if test="@rx.Ognl@isNotEmpty(params.keyword) and params.keyword == 'working'">
-                CATEGORY_ID = 40
-            </if>
-            <if test="@rx.Ognl@isNotEmpty(params.keyword) and params.keyword == 'experience'">
-                CATEGORY_ID = 50
-            </if>
-            and IS_DEL = 0 and APPROVAL_STATUS = 5
-        </where>
-        ORDER BY
-        <if test="@rx.Ognl@isNotEmpty(w.orderBySql)">
-            ${w.orderBySql},
-        </if>
-        CREATE_TIME_ DESC
+        FROM
+        KM_KNOWLEDGE k
+        WHERE
+        k.CATEGORY_ID IN (
+        SELECT c.PK_ID FROM KM_KNOWLEDGE_CATEGORY c START WITH c.PK_ID = #{params.categoryId} CONNECT BY PRIOR c.PK_ID = c.PARENT
+        ) ORDER BY CREATE_TIME_
     </select>
 
     <update id="updateApprovalStatus">
@@ -174,7 +168,7 @@
         k.COMPANY_ID_,k.CREATE_DEP_ID_,k.TENANT_ID_,k.CREATE_BY_,k.CREATE_TIME_,k.UPDATE_BY_,k.UPDATE_TIME_,k.DOCUMENT_ID
         FROM KM_KNOWLEDGE k JOIN KM_KNOWLEDGE_APPROVE ka ON k.PK_ID = ka.KNOWLEDGER_ID
         <where>
-           k.IS_DEL = 0 and (APPROVAL_STATUS = 1 OR APPROVAL_STATUS = 3)
+            k.IS_DEL = 0 and (APPROVAL_STATUS = 1 OR APPROVAL_STATUS = 3)
         </where>
         ORDER BY ka.CREATE_TIME_ DESC,ka.SORT ASC
     </select>
@@ -185,6 +179,28 @@
         where PK_ID = #{pkId}
     </update>
 
+<!--    <insert id="insert" parameterType="com.redxun.knowledge.entity.dao.Knowledge">-->
+<!--        DECLARE-->
+<!--        V_LANG CLOB :=-->
+<!--        #{content,jdbcType=CLOB};-->
+<!--        BEGIN-->
+<!--INSERT INTO KM_KNOWLEDGE(PK_ID, TITLES,CATEGORY_ID,TYPE,SUMMARY,ATTACHMENT,ATTACHMENT_NAME,ATTACHMENT_TYPE,UPDATE_BY_,AUTHOR,CONTENT-->
+<!--)VALUES(-->
+<!--        #{pkId,jdbcType=VARCHAR},-->
+<!--        #{titles},-->
+<!--        #{categoryId},-->
+<!--        #{type},-->
+<!--        #{summary},-->
+<!--        #{attachment},-->
+<!--        #{attachmentName},-->
+<!--        #{attachmentType},-->
+<!--        #{updateBy},-->
+<!--        #{author},-->
+<!--        V_LANG-->
+<!--        );-->
+<!--        END;-->
+<!--    </insert>-->
+
 
 </mapper>