Pārlūkot izejas kodu

优化后管表单删除逻辑,使用pKeyId主键删除

lvy 3 dienas atpakaļ
vecāks
revīzija
0e0ea4b28f

+ 17 - 7
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreePrivateController.java

@@ -451,13 +451,23 @@ public class WbsTreePrivateController extends BladeController {
     @ApiOperation(value = "删除节点下的元素表", notes = "传入表单id、wbsId、projectId")
     public R removeTableByCondition(@RequestParam("id") String id,
                                     @RequestParam("wbsId") String wbsId,
-                                    @RequestParam("projectId") String projectId) {
-        Long row = wbsTreeContractMapper.selectCount(Wrappers.<WbsTreeContract>query().lambda().eq(WbsTreeContract::getProjectId, projectId).eq(WbsTreeContract::getWbsId, wbsId).eq(WbsTreeContract::getId, id));
-        if (row > 0L) {
-            throw new ServiceException("当前表单被合同段引用中,删除失败");
-        }
-        if (wbsTreePrivateService.removeTableByCondition(id, wbsId, projectId)) {
-            return R.success("删除成功");
+                                    @RequestParam("projectId") String projectId, @RequestParam("pKeyId") String pKeyId) {
+        if (StringUtil.isNumeric(pKeyId)) {
+            Long row = wbsTreeContractMapper.selectCount(Wrappers.<WbsTreeContract>query().lambda().eq(WbsTreeContract::getProjectId, projectId).eq(WbsTreeContract::getWbsId, wbsId).eq(WbsTreeContract::getIsTypePrivatePid, pKeyId));
+            if (row > 0L) {
+                throw new ServiceException("当前表单被合同段引用中,删除失败");
+            }
+            if (wbsTreePrivateService.removeTableByPKeyIdCondition(pKeyId, wbsId, projectId)) {
+                return R.success("删除成功");
+            }
+        } else if (StringUtil.isNumeric(id)) {
+            Long row = wbsTreeContractMapper.selectCount(Wrappers.<WbsTreeContract>query().lambda().eq(WbsTreeContract::getProjectId, projectId).eq(WbsTreeContract::getWbsId, wbsId).eq(WbsTreeContract::getId, id));
+            if (row > 0L) {
+                throw new ServiceException("当前表单被合同段引用中,删除失败");
+            }
+            if (wbsTreePrivateService.removeTableByCondition(id, wbsId, projectId)) {
+                return R.success("删除成功");
+            }
         }
         return R.fail("删除失败");
     }

+ 1 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.java

@@ -38,6 +38,7 @@ public interface WbsTreePrivateMapper extends EasyBaseMapper<WbsTreePrivate> {
     List<WbsNodeTableVO> selectByNodeTable(String id, String wbsId, String projectId);
 
     void updateDeletedByCondition(String id, String wbsId, String projectId);
+    void removeTableByPKeyIdCondition(String pKeyId, String wbsId, String projectId);
 
     List<WbsTreePrivateVO> lazyTree(String wbsId, Integer wbsType, Long parentId, String projectId,Integer type);
 

+ 8 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.xml

@@ -189,6 +189,14 @@
           AND wbs_id = #{wbsId}
           AND project_id = #{projectId}
     </update>
+    <update id="removeTableByPKeyIdCondition">
+        UPDATE m_wbs_tree_private
+        SET is_deleted = 1
+        WHERE type = 2
+          AND p_key_id = #{pKeyId}
+          AND wbs_id = #{wbsId}
+          AND project_id = #{projectId}
+    </update>
 
     <update id="updateByPKeyId">
         update m_wbs_tree_private

+ 1 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsTreePrivateService.java

@@ -25,6 +25,7 @@ public interface IWbsTreePrivateService extends BaseService<WbsTreePrivate> {
     List<WbsNodeTableVO> selectByNodeTable(String id, String wbsId, String projectId);
 
     boolean removeTableByCondition(String id, String wbsId, String projectId);
+    boolean removeTableByPKeyIdCondition(String pKeyId, String wbsId, String projectId);
 
     List<WbsTreePrivateVO> lazyTree(String wbsId, String wbsType, Long parentId, String projectId,Integer type);
 

+ 11 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreePrivateServiceImpl.java

@@ -258,6 +258,17 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
         }
         return true;
     }
+    @Override
+    public boolean removeTableByPKeyIdCondition(String pKeyId, String wbsId, String projectId) {
+        baseMapper.removeTableByPKeyIdCondition(pKeyId, wbsId, projectId);
+        List<WbsTreeContract> wbsTreeContractsTable = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>query().lambda().select(WbsTreeContract::getPKeyId).eq(WbsTreeContract::getProjectId, projectId)
+                .eq(WbsTreeContract::getIsTypePrivatePid, pKeyId).eq(WbsTreeContract::getWbsId, wbsId).eq(WbsTreeContract::getType, 2).eq(WbsTreeContract::getStatus, 1));
+        List<Long> ids = wbsTreeContractsTable.stream().map(WbsTreeContract::getPKeyId).collect(Collectors.toList());
+        if (!ids.isEmpty()) {
+            wbsTreeContractMapper.updateDeletedByIds(ids);
+        }
+        return true;
+    }
 
     @Override
     public List<WbsTreePrivateVO> lazyTree(String wbsId, String wbsType, Long parentId, String projectId, Integer type) {