Просмотр исходного кода

增加数据字典重复的判断

zhoux 1 год назад
Родитель
Сommit
59c59d35e1

+ 7 - 0
src/main/java/com/dk/mdm/mapper/mst/DictionaryDataMapper.java

@@ -40,5 +40,12 @@ public interface DictionaryDataMapper extends BaseMapper<DictionaryData>{
     Integer updateBatchDictionaryDataDisplayNo(List<Map<String,Object>> dataIds);
     Integer updateFlgDefault(DictionaryDataQuery dictionaryDataQuery);
 
+    /**
+     * @desc : 判断值是否重复
+     * @author : 周兴
+     * @date :  2024/6/19 9:39
+     */
+    Long checkValueDuplicated(DictionaryData dictionaryData);
+
 }
 

+ 43 - 32
src/main/java/com/dk/mdm/mapper/mst/DictionaryDataMapper.xml

@@ -5,32 +5,34 @@
     <!-- 通用设置 -->
     <!-- 通用查询列 -->
     <sql id="Base_Column_List">
-        data_id, dict_code, data_value, display_no, remarks, flg_valid, cp_id, op_create_time, op_create_user_id, op_update_time, op_update_user_id, op_app_code, op_timestamp, op_db_user, sys_code, data_code, flg_default
+        data_id
+        , dict_code, data_value, display_no, remarks, flg_valid, cp_id, op_create_time, op_create_user_id, op_update_time, op_update_user_id, op_app_code, op_timestamp, op_db_user, sys_code, data_code, flg_default
     </sql>
 
     <!-- 通用查询映射结果 -->
     <resultMap id="BaseResultMap" type="com.dk.mdm.model.pojo.mst.DictionaryData">
         <id column="data_id" property="dataId"/>
-                <result column="dict_code" property="dictCode"/>
-                <result column="data_value" property="dataValue"/>
-                <result column="display_no" property="displayNo"/>
-                <result column="remarks" property="remarks"/>
-                <result column="flg_valid" property="flgValid"/>
-                <result column="cp_id" property="cpId"/>
-            <result column="op_create_time" property="opCreateTime" typeHandler="TimestampTypeHandler"/>
-                <result column="op_create_user_id" property="opCreateUserId" typeHandler="UuidTypeHandler"/>
-            <result column="op_update_time" property="opUpdateTime" typeHandler="TimestampTypeHandler"/>
-                <result column="op_update_user_id" property="opUpdateUserId" typeHandler="UuidTypeHandler"/>
-                <result column="op_app_code" property="opAppCode"/>
-            <result column="op_timestamp" property="opTimestamp" typeHandler="TimestampTypeHandler"/>
-                <result column="op_db_user" property="opDbUser"/>
-                <result column="sys_code" property="sysCode"/>
-                <result column="data_code" property="dataCode"/>
-                <result column="flg_default" property="flgDefault"/>
+        <result column="dict_code" property="dictCode"/>
+        <result column="data_value" property="dataValue"/>
+        <result column="display_no" property="displayNo"/>
+        <result column="remarks" property="remarks"/>
+        <result column="flg_valid" property="flgValid"/>
+        <result column="cp_id" property="cpId"/>
+        <result column="op_create_time" property="opCreateTime" typeHandler="TimestampTypeHandler"/>
+        <result column="op_create_user_id" property="opCreateUserId" typeHandler="UuidTypeHandler"/>
+        <result column="op_update_time" property="opUpdateTime" typeHandler="TimestampTypeHandler"/>
+        <result column="op_update_user_id" property="opUpdateUserId" typeHandler="UuidTypeHandler"/>
+        <result column="op_app_code" property="opAppCode"/>
+        <result column="op_timestamp" property="opTimestamp" typeHandler="TimestampTypeHandler"/>
+        <result column="op_db_user" property="opDbUser"/>
+        <result column="sys_code" property="sysCode"/>
+        <result column="data_code" property="dataCode"/>
+        <result column="flg_default" property="flgDefault"/>
     </resultMap>
 
     <sql id="Base_Column_List_Response">
-        data_id, dict_code, data_value, display_no, remarks, flg_valid, cp_id, data_code, flg_default,sys_code
+        data_id
+        , dict_code, data_value, display_no, remarks, flg_valid, cp_id, data_code, flg_default,sys_code
     </sql>
 
     <resultMap id="BaseResultMapResponse" type="com.dk.mdm.model.response.mst.DictionaryDataResponse">
@@ -101,10 +103,10 @@
                 AND flg_valid =
                 any(#{flgValidList, typeHandler=BooleanListTypeHandler})
             </if>
-            <if  test="searchText != null">
-                AND (data_value  like concat('%', my_ex.likequery(#{searchText}) , '%')
-                OR  dict_code  like concat('%', my_ex.likequery(#{searchText}) , '%')
-                OR  remarks like concat('%', my_ex.likequery(#{searchText}) , '%')
+            <if test="searchText != null">
+                AND (data_value like concat('%', my_ex.likequery(#{searchText}) , '%')
+                OR dict_code like concat('%', my_ex.likequery(#{searchText}) , '%')
+                OR remarks like concat('%', my_ex.likequery(#{searchText}) , '%')
                 )
             </if>
 
@@ -139,11 +141,9 @@
         <include refid="Condition"/>
     </select>
     <select id="countByCondMoneyAccount" resultType="Long">
-        SELECT
-            count(1)
-        FROM
-            dkic_b.t_mst_money_account
-                LEFT JOIN dkic_b.t_mst_dictionary_data dd ON mac_type = dd.data_id
+        SELECT count(1)
+        FROM dkic_b.t_mst_money_account
+                 LEFT JOIN dkic_b.t_mst_dictionary_data dd ON mac_type = dd.data_id
         where dd.data_id = #{id}::uuid
     </select>
 
@@ -155,6 +155,18 @@
         WHERE data_id = #{id}::uuid
     </select>
 
+    <!-- 判断名称是否重复 -->
+    <select id="checkValueDuplicated" resultType="Long">
+        SELECT count(1)
+        FROM dkic_b.t_mst_dictionary_data
+        WHERE dict_code = #{dictCode}
+        AND cp_id = #{cpId}
+        AND data_value = #{dataValue}
+        <if test="dataId != null  and dataId != 0">
+            AND data_id != #{dataId}
+        </if>
+    </select>
+
     <!-- 根据主键锁定表t_mst_dictionary_data的一行数据 -->
     <select id="selectByIdForUpdate" resultMap="BaseResultMap">
         SELECT
@@ -207,8 +219,6 @@
     </insert>
 
 
-
-
     <update id="updateBatchDictionaryDataDisplayNo">
         <foreach collection="list" index="index" item="item" separator=";">
             UPDATE dkic_b.t_mst_dictionary_data
@@ -221,8 +231,9 @@
 
     <update id="updateFlgDefault">
         UPDATE dkic_b.t_mst_dictionary_data
-        SET
-            flg_default = false
-        WHERE      dict_code = #{dictCode} AND  cp_id = #{cpId} and (flg_default = true OR flg_default is null)
+        SET flg_default = false
+        WHERE dict_code = #{dictCode}
+          AND cp_id = #{cpId}
+          and (flg_default = true OR flg_default is null)
     </update>
 </mapper>

+ 7 - 0
src/main/java/com/dk/mdm/service/mst/DictionaryDataService.java

@@ -1,5 +1,6 @@
 package com.dk.mdm.service.mst;
 
+import com.dk.common.exception.BaseBusinessException;
 import com.dk.common.infrastructure.annotaiton.Pagination;
 import com.dk.common.infrastructure.constant.Constant;
 import com.dk.common.infrastructure.enums.ErrorCodeEnum;
@@ -98,6 +99,12 @@ public class DictionaryDataService extends BaseService<DictionaryData> {
     public ResponseResultVO<?> insert(DictionaryDataVO dictionaryDataVO) {
         //实体转换
         DictionaryData dictionaryData = dictionaryDataConvert.convertToPo(dictionaryDataVO);
+        // 同类型名称不允许重复
+        Long count = dictionaryDataMapper.checkValueDuplicated(dictionaryData);
+        if(count > 0){
+            throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ISEXISTS_DATAVALUE.getMessage());
+        }
+
         Map<String, Object> map = new HashMap<>();
         map.put("dictCode", dictionaryDataVO.getDictCode());
         //设置序号