Przeglądaj źródła

独立表单库直接分配表单到合同段节点

qianxb 1 rok temu
rodzic
commit
014c0fafc2

+ 14 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreePrivateController.java

@@ -750,4 +750,18 @@ public class WbsTreePrivateController extends BladeController {
         return R.success("同步成功");
     }
 
+    @GetMapping("/syncFormToContractNode")
+    @ApiOperationSupport(order = 99)
+    @ApiOperation(value = "后管独立表单库表单同步到合同段所有选择的节点下", notes = "传入项目id,nodeIds为多个节点的primaryKeyId逗号分隔,传入表单primaryKeyId")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(name = "projectId", value = "项目Id", required = true),
+            @ApiImplicitParam(name = "nodeIds", value = "节点primaryKeyId逗号分隔", required = true),
+            @ApiImplicitParam(name = "primaryKeyId", value = "表单id", required = true)
+
+    })
+    public R<String> syncFormToContractNode(Long projectId,String nodeIds, Long primaryKeyId) {
+        wbsTreePrivateService.syncFormToContractNode(projectId,nodeIds, primaryKeyId);
+        return R.success("分配成功");
+    }
+
 }

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

@@ -66,7 +66,7 @@ public interface IWbsTreePrivateService extends BaseService<WbsTreePrivate> {
 
     boolean syncNodeTable(String primaryKeyId);
 
-    R addWbsTreeContractInfo(String nodeId, String primaryKeyIds, long contractId);
+    R addWbsTreeContractInfo(String nodeId, String primaryKeyIds, Long contractId);
 
     // 向项目添加元素
     R addWbsTreeProjectInfo(String primaryKeyIds, String projectId) throws IOException;
@@ -93,4 +93,6 @@ public interface IWbsTreePrivateService extends BaseService<WbsTreePrivate> {
     Map<String, List<Object>> treeRecordTrial(String wbsId, String projectId, String pKeyId);
 
     void syncCurrentFormInProject(Long pKeyId);
+
+    void syncFormToContractNode(Long projectId, String nodeId, Long primaryKeyId);
 }

+ 29 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreePrivateServiceImpl.java

@@ -2193,6 +2193,33 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
         wbsTreeContractService.syncCurrentFormToAllContract(treePrivate);
     }
 
+    @Override
+    public void syncFormToContractNode(Long projectId, String nodeIds, Long primaryKeyId) {
+        try {
+            if (projectId == null || StringUtils.isBlank(nodeIds) || primaryKeyId == null){
+                throw new ServiceException("参数不能为空,请检查参数");
+            }
+            //找到当前项目级的节点信息
+            List<WbsTreePrivate> privates = this.list(new LambdaQueryWrapper<WbsTreePrivate>()
+                    .in(WbsTreePrivate::getPKeyId, Func.toLongList(nodeIds)));
+            if (privates.size() == 0){
+                throw new ServiceException("未找到当前项目的节点信息,是确认是否选择节点");
+            }
+            //找到项目所有合同段下当前节点
+            List<WbsTreeContract> list = wbsTreeContractService.list(new LambdaQueryWrapper<WbsTreeContract>()
+                    .eq(WbsTreeContract::getProjectId, projectId)
+                    .in(WbsTreeContract::getIsTypePrivatePid, Func.toLongList(nodeIds)));
+            if (list.size() > 0){
+                //循环保存
+                for (WbsTreeContract wbsTreeContract : list) {
+                    this.addWbsTreeContractInfo(wbsTreeContract.getPKeyId()+"",primaryKeyId+"", Long.valueOf(wbsTreeContract.getContractId()));
+                }
+            }
+        }catch (Exception e){
+            throw new ServiceException("分配失败,原因:"+e.getMessage());
+        }
+    }
+
     private List<WbsTreePrivateVO5> buildWbsTreeByStreamTrial(List<WbsTreePrivateVO5> wbsTreeVO2s) {
         List<WbsTreePrivateVO5> list = wbsTreeVO2s.stream().filter(f -> f.getParentId() == 0L).collect(Collectors.toList());
         Map<Long, List<WbsTreePrivateVO5>> map = wbsTreeVO2s.stream().collect(Collectors.groupingBy(WbsTreePrivateVO5::getParentId));
@@ -2231,7 +2258,7 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
     }
 
     @Override
-    public R addWbsTreeContractInfo(String nodeId, String primaryKeyIds, long contractId) {
+    public R addWbsTreeContractInfo(String nodeId, String primaryKeyIds, Long contractId) {
         if (com.alibaba.cloud.commons.lang.StringUtils.isEmpty(nodeId)) {
             return R.fail("nodeId不能为空");
         }
@@ -2245,6 +2272,7 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
         for (Long id : longs) {
             WbsTreePrivate wbsTreePrivate = wbsTreePrivateMapper.getByPKeyId(id);
             wbsTreePrivate.setParentId(wbsTreeContract.getId());
+            wbsTreePrivate.setAncestors(wbsTreeContract.getAncestors()+","+wbsTreeContract.getId());
             wbsTreePrivate.setWbsId(wbsTreeContract.getWbsId());
             wbsTreePrivate.setFullName(wbsTreePrivate.getNodeName());
             wbsTreePrivate.setType(2);