فهرست منبع

fix:解决流程修改流程节点脚本关联数据问题

xuezizhuo 1 سال پیش
والد
کامیت
85a834b3cf

+ 7 - 0
ruoyi-system/src/main/java/com/ruoyi/system/mapper/BpmNodeScriptRelevanceMapper.java

@@ -65,4 +65,11 @@ public interface BpmNodeScriptRelevanceMapper
      * @return
      */
     BpmNodeScriptRelevance selectAutoScriptByNodeKey(String nodeKey);
+
+    /**
+     * 根据节点编码删除流程节点脚本关联
+     * @param nodeKeys 节点编码
+     * @return
+     */
+    int deleteBpmNodeScriptRelevanceByNodeKeys(List<String> nodeKeys);
 }

+ 7 - 0
ruoyi-system/src/main/java/com/ruoyi/system/mapper/BpmProcessConfigurationMapper.java

@@ -61,4 +61,11 @@ public interface BpmProcessConfigurationMapper {
      */
     public int deleteBpmProcessConfigurationByIds(Long[] ids);
 
+    /**
+     * 根据id查询nodeKey
+     * @param ids
+     * @return
+     */
+    List<String> selectNodeKeyByIds(List<Long> ids);
+
 }

+ 7 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/IBpmNodeScriptRelevanceService.java

@@ -65,4 +65,11 @@ public interface IBpmNodeScriptRelevanceService {
      * @return
      */
     BpmNodeScriptRelevance selectAutoScriptByNodeKey(String nodeKey);
+
+    /**
+     * 根据节点编码删除流程节点脚本关联
+     * @param nodeKeys 节点编码
+     * @return
+     */
+    int deleteBpmNodeScriptRelevanceByNodeKeys(List<String> nodeKeys);
 }

+ 5 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/BpmNodeScriptRelevanceServiceImpl.java

@@ -95,4 +95,9 @@ public class BpmNodeScriptRelevanceServiceImpl implements IBpmNodeScriptRelevanc
     public BpmNodeScriptRelevance selectAutoScriptByNodeKey(String nodeKey) {
         return bpmNodeScriptRelevanceMapper.selectAutoScriptByNodeKey(nodeKey);
     }
+
+    @Override
+    public int deleteBpmNodeScriptRelevanceByNodeKeys(List<String> nodeKeys) {
+        return bpmNodeScriptRelevanceMapper.deleteBpmNodeScriptRelevanceByNodeKeys(nodeKeys);
+    }
 }

+ 7 - 12
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/BpmProcessConfigurationServiceImpl.java

@@ -178,19 +178,14 @@ public class BpmProcessConfigurationServiceImpl implements IBpmProcessConfigurat
 
         // 修改节点脚本关系
         if (nodeVo.getBpmNodeScriptRelevanceList().size() != 0) {
-            List<BpmNodeScriptRelevance> addList2 = new ArrayList<>();
-            Iterator<BpmNodeScriptRelevance> iterator = nodeVo.getBpmNodeScriptRelevanceList().iterator();
-            while (iterator.hasNext()) {
-                BpmNodeScriptRelevance item = iterator.next();
-                if (item.getId() == null) {
-                    addList2.add(item);
-                    iterator.remove();
-                }
+            //删除节点脚本关系
+            List<String> nodeKeys = nodeVo.getBpmNodeScriptRelevanceList().stream().map(BpmNodeScriptRelevance::getNodeKey).collect(Collectors.toList());
+            if(nodeVo.getRemoveNodeIds().length > 0){
+                nodeKeys.addAll(bpmProcessConfigurationMapper.selectNodeKeyByIds(Arrays.asList(nodeVo.getRemoveNodeIds())));
             }
-
-            iBpmNodeScriptRelevanceService.updateBpmNodeScriptRelevance(nodeVo.getBpmNodeScriptRelevanceList());
-            if (addList2.size() != 0)
-                iBpmNodeScriptRelevanceService.insertBpmNodeScriptRelevance(addList2);
+            iBpmNodeScriptRelevanceService.deleteBpmNodeScriptRelevanceByNodeKeys(nodeKeys);
+            //新增节点脚本关系
+            iBpmNodeScriptRelevanceService.insertBpmNodeScriptRelevance(nodeVo.getBpmNodeScriptRelevanceList());
         }
         // 删除废弃的节点
         if (nodeVo.getRemoveNodeIds().length > 0) {

+ 7 - 0
ruoyi-system/src/main/resources/mapper/bpm/BpmNodeScriptRelevanceMapper.xml

@@ -67,4 +67,11 @@
         where node_key = #{nodeKey} and script_trigger_type = 1
     </select>
 
+    <delete id="deleteBpmNodeScriptRelevanceByNodeKeys" parameterType="string">
+        delete from bpm_node_script_relevance where node_key in
+        <foreach collection="list" item="nodeKey" open="(" close=")" separator=",">
+            #{nodeKey}
+        </foreach>
+    </delete>
+
 </mapper>

+ 8 - 1
ruoyi-system/src/main/resources/mapper/bpm/BpmProcessConfigurationMapper.xml

@@ -97,7 +97,7 @@
         update {DBNAME}.bpm_process_configuration
         <trim prefix="SET" suffixOverrides=",">
             <if test="nodeKey != null">node_key = #{nodeKey},</if>
-            <if test="nodeName != null">node_key = #{nodeName},</if>
+            <if test="nodeName != null">node_name = #{nodeName},</if>
             <if test="nodeFormKey != null">node_form_key = #{nodeFormKey},</if>
             <if test="nodeFormType != null">node_form_type = #{nodeFormType},</if>
             <if test="nodeProcessKey != null">node_process_key = #{nodeProcessKey},</if>
@@ -132,4 +132,11 @@
             #{id}
         </foreach>
     </update>
+
+    <select id="selectNodeKeyByIds" resultType="string">
+        select node_key from bpm_process_configuration where id in
+        <foreach collection="list" item="id" open="(" close=")" separator=",">
+            #{id}
+        </foreach>
+    </select>
 </mapper>