瀏覽代碼

奉建路关联

laibulaizheli 3 天之前
父節點
當前提交
1c193a6c08

+ 2 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsDivideController.java

@@ -78,11 +78,11 @@ public class WbsDivideController extends BladeController {
     }
 
     /**
-     * 批量绑定节点
+     * 批量绑定节点(先删除该pKeyId的所有已有绑定,再重新绑定)
      */
     @PostMapping("/batchBind")
     @ApiOperationSupport(order = 2)
-    @ApiOperation(value = "批量绑定节点", notes = "传入pKeyId、projectId、contractId和节点列表")
+    @ApiOperation(value = "批量绑定节点", notes = "传入pKeyId、projectId、contractId和节点列表。注意:会先删除该pKeyId的所有已有绑定,再重新绑定传入的节点列表")
     public R<Integer> batchBind(@RequestParam Long pKeyId,
                                  @RequestParam String projectId,
                                  @RequestParam String contractId,

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

@@ -45,6 +45,14 @@ public interface WbsDivideMapper extends BaseMapper<WbsDivide> {
      */
     Integer unbind(@Param("divideId") String divideId, @Param("pKeyId") Long pKeyId);
 
+    /**
+     * 批量解绑,根据pKeyId删除所有相关记录(设置isDeleted为1)
+     *
+     * @param pKeyId 关联键ID
+     * @return 影响行数
+     */
+    Integer unbindAllByPKeyId(@Param("pKeyId") Long pKeyId);
+
 }
 
 

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

@@ -54,6 +54,14 @@
           AND p_key_id = #{pKeyId}
     </update>
 
+    <!-- 批量解绑,根据pKeyId删除所有相关记录(设置isDeleted为1) -->
+    <update id="unbindAllByPKeyId">
+        UPDATE m_wbs_divide
+        SET is_deleted = 1
+        WHERE p_key_id = #{pKeyId}
+          AND is_deleted = 0
+    </update>
+
 </mapper>
 
 

+ 9 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsDivideService.java

@@ -61,7 +61,7 @@ public interface IWbsDivideService extends BaseService<WbsDivide> {
     DivideClientReq getChildNodes(String contractId, String parentId);
 
     /**
-     * 批量绑定节点
+     * 批量绑定节点(先删除该pKeyId的所有已有绑定,再重新绑定)
      *
      * @param pKeyId          关联键ID
      * @param divideClientVos 划分客户端VO列表
@@ -71,6 +71,14 @@ public interface IWbsDivideService extends BaseService<WbsDivide> {
      */
     int batchBind(Long pKeyId, List<DivideClientVo> divideClientVos, String projectId, String contractId);
 
+    /**
+     * 批量解绑,根据pKeyId删除所有相关记录
+     *
+     * @param pKeyId 关联键ID
+     * @return 是否成功
+     */
+    boolean unbindAllByPKeyId(Long pKeyId);
+
     /**
      * 查询指定pKeyId已关联的所有divideId列表
      *

+ 26 - 4
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsDivideServiceImpl.java

@@ -137,18 +137,40 @@ public class WbsDivideServiceImpl extends BaseServiceImpl<WbsDivideMapper, WbsDi
             return 0;
         }
 
+        // 先删除该pKeyId的所有已有绑定
+        log.info("批量绑定前,先删除pKeyId={}的所有已有绑定", pKeyId);
+        unbindAllByPKeyId(pKeyId);
+
+        // 重新绑定
         int successCount = 0;
         for (DivideClientVo divideClientVo : divideClientVos) {
-            boolean result = bind(pKeyId, divideClientVo, projectId, contractId);
-            if (result) {
+            // 创建新记录(不再需要检查是否存在,因为已经全部删除了)
+            WbsDivide wbsDivide = new WbsDivide();
+            wbsDivide.setPKeyId(pKeyId);
+            wbsDivide.setDivideId(divideClientVo.getId());
+            wbsDivide.setName(divideClientVo.getName());
+            wbsDivide.setParentId(divideClientVo.getParentId());
+            wbsDivide.setContractId(contractId);
+            wbsDivide.setDivideNum(divideClientVo.getDivideNum());
+            wbsDivide.setProjectId(projectId);
+            
+            if (save(wbsDivide)) {
                 successCount++;
             }
         }
         
-        log.info("批量绑定节点,pKeyId={}, 总数={}, 成功={}", pKeyId, divideClientVos.size(), successCount);
+        log.info("批量绑定节点完成,pKeyId={}, 总数={}, 成功={}", pKeyId, divideClientVos.size(), successCount);
         return successCount;
     }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean unbindAllByPKeyId(Long pKeyId) {
+        Integer rows = baseMapper.unbindAllByPKeyId(pKeyId);
+        log.info("批量解绑pKeyId={}的记录,影响行数={}", pKeyId, rows);
+        return rows != null && rows > 0;
+    }
+
     @Override
     public List<String> getBindedDivideIds(Long pKeyId) {
         List<WbsDivide> list = baseMapper.selectByPKeyId(pKeyId);
@@ -202,7 +224,7 @@ public class WbsDivideServiceImpl extends BaseServiceImpl<WbsDivideMapper, WbsDi
                     // 3. 使用informationQueryClient.getInfoByWbsId获取InformationQuery对象
                     // 第二个参数classify传0
                     org.springblade.business.entity.InformationQuery informationQuery = 
-                            informationQueryClient.getInfoByWbsId(pKeyId, 0);
+                            informationQueryClient.getInfoByWbsId(pKeyId, 1);
                     
                     if (informationQuery != null && informationQuery.getPdfUrl() != null 
                             && !informationQuery.getPdfUrl().trim().isEmpty()) {