Browse Source

bug

Signed-off-by: liuyc <56808083@qq.com>
liuyc 1 year ago
parent
commit
01c7344384

+ 30 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/PrivateTreeVO.java

@@ -0,0 +1,30 @@
+package org.springblade.manager.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+public class PrivateTreeVO implements Serializable {
+
+    @ApiModelProperty(value = "主键id")
+    private Long pKeyId;
+
+    @ApiModelProperty(value = "id")
+    private Long id;
+
+    @ApiModelProperty(value = "父级id")
+    private Long parentId;
+
+    @ApiModelProperty(value = "节点名称")
+    private String nodeName;
+
+    @ApiModelProperty(value = "子节点数组")
+    private List<PrivateTreeVO> children;
+
+    @ApiModelProperty(value = "是否不存在子节点")
+    private boolean notExsitChild;
+
+}

+ 3 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsTreeContractTreeAllVO.java

@@ -38,6 +38,9 @@ public class WbsTreeContractTreeAllVO implements INode<WbsTreeContractTreeAllVO>
     @ApiModelProperty("未填报1 、已填报-未上报2 、已填报-待审批3 、已审批4")
     private Integer colorStatus;
 
+    @ApiModelProperty(value = "是否为自定义新增节点 1=是")
+    private Integer isCustom;
+
     @JsonInclude(JsonInclude.Include.NON_EMPTY)
     private List<WbsTreeContractTreeAllVO> children;
 

+ 11 - 0
blade-service/blade-business/pom.xml

@@ -174,6 +174,17 @@
             <scope>compile</scope>
         </dependency>
 
+        <dependency>
+            <groupId>org.xhtmlrenderer</groupId>
+            <artifactId>flying-saucer-pdf</artifactId>
+            <version>9.1.22</version>
+        </dependency>
+        <dependency>
+            <groupId>org.xhtmlrenderer</groupId>
+            <artifactId>flying-saucer-core</artifactId>
+            <version>9.1.22</version>
+        </dependency>
+
     </dependencies>
 
     <build>

+ 15 - 3
blade-service/blade-business/src/main/java/org/springblade/business/controller/TaskController.java

@@ -31,6 +31,7 @@ import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
+import org.springblade.core.redis.cache.BladeRedis;
 import org.springblade.core.secure.BladeUser;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.secure.utils.SecureUtil;
@@ -96,6 +97,7 @@ public class TaskController extends BladeController {
     private final IUserClient userClient;
     private final ArchiveAutoClient archiveClient;
     private final ArchiveExpertConclusionClient conclusionClient;
+    private final BladeRedis bladeRedis;
 
     /**
      * 记录短信验证码超时时间
@@ -401,6 +403,14 @@ public class TaskController extends BladeController {
             throw new ServiceException("未获取到任务人信息,操作失败");
         }
 
+        /*加锁*/
+        String redisValue = bladeRedis.get("archive:approve:user:" + SecureUtil.getUserId());
+        if (StringUtils.isNotEmpty(redisValue) && redisValue.equals("1")) {
+            return R.fail(400, "请勿重复提交,3秒后再尝试");
+        }
+        bladeRedis.set("archive:approve:user:" + SecureUtil.getUserId(), "1");
+        bladeRedis.expire("archive:approve:user:" + SecureUtil.getUserId(), 3);
+
         //预设流程,获取对应任务人id
         String resultString = "";
         if (ObjectUtil.isNotEmpty(archiveTaskBatchReportDTO.getFixedFlowId())) {
@@ -435,6 +445,8 @@ public class TaskController extends BladeController {
         //创建上报任务
         Map<Long, String> nameMap = jdbcTemplate.query("select id,name from blade_user where is_deleted = 0", new BeanPropertyRowMapper<>(User.class)).stream().collect(Collectors.toMap(User::getId, User::getName, (key1, key2) -> key1));
         String[] userIds = archiveTaskBatchReportDTO.getUserIds().split(",");
+        Set<String> uniqueUserIdsSet = new LinkedHashSet<>(Arrays.asList(userIds));
+        String[] uniqueUserIdsArray = uniqueUserIdsSet.toArray(new String[0]);
         String[] dataArr = archiveTaskBatchReportDTO.getDataIds().split(",");
         if (dataArr.length > 0) {
             for (String id : dataArr) {
@@ -497,7 +509,7 @@ public class TaskController extends BladeController {
                 taskService.save(task);
 
                 //创建任务相关信息
-                for (String userId : userIds) {
+                for (String userId : uniqueUserIdsArray) {
                     TaskParallel taskParallel = new TaskParallel();
                     taskParallel.setId(SnowFlakeUtil.getId());
                     taskParallel.setProcessInstanceId(processInstanceId.toString());
@@ -529,8 +541,8 @@ public class TaskController extends BladeController {
             }
 
             Set<String> aopParamsSet = new HashSet<>();
-            if (userIds.length > 0) {
-                for (String userId : userIds) {
+            if (uniqueUserIdsArray.length > 0) {
+                for (String userId : uniqueUserIdsArray) {
                     String param = userId + "," + archiveTaskBatchReportDTO.getProjectId() + "," + archiveTaskBatchReportDTO.getContractId();
                     aopParamsSet.add(param);
                 }

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

@@ -225,7 +225,7 @@ public class ContractInfoServiceImpl extends BaseServiceImpl<ContractInfoMapper,
                 wbsTreePrivateRoot = wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getId, oldId)
                         .eq(WbsTreePrivate::getProjectId, parentNodeRoot.getProjectId()).eq(WbsTreePrivate::getWbsId, parentNodeRoot.getWbsId()).eq(WbsTreePrivate::getStatus, 1));
                 if (ObjectUtil.isEmpty(wbsTreePrivateRoot)) {
-                    throw new ServiceException("查询数据失败,请联系管理员");
+                    throw new ServiceException("暂无数据");
                 }
             }
 

+ 19 - 2
blade-service/blade-user/src/main/java/org/springblade/system/user/controller/WbsTreeController.java

@@ -14,6 +14,7 @@ import org.springblade.business.vo.InformationQueryVO;
 import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.ObjectUtil;
+import org.springblade.manager.vo.PrivateTreeVO;
 import org.springblade.manager.vo.WbsTreeContractLazyVO;
 import org.springblade.system.user.service.IUserService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -121,9 +122,25 @@ public class WbsTreeController extends BladeController {
             @ApiImplicitParam(name = "contractIdRelation", value = "合同段关联id(监理、业主合同关联施工合同id)")
     })
     public R<List<WbsTreeContractLazyVO>> queryContractWbsTreeByFirstInfo(@RequestParam String parentId,
-                                                                           @RequestParam String contractId,
-                                                                           @RequestParam String contractIdRelation) {
+                                                                          @RequestParam String contractId,
+                                                                          @RequestParam String contractIdRelation) {
         return R.data(iUserService.queryContractWbsTreeByFirstInfo(parentId, contractId, contractIdRelation));
     }
 
+    /**
+     * 项目全加载树
+     *
+     * @author liuyc
+     * @date 2024年1月30日09:56:37
+     */
+    @GetMapping("/private/tree")
+    @ApiOperationSupport(order = 4)
+    @ApiOperation(value = "项目全加载树", notes = "传入当前项目id")
+    public R<List<PrivateTreeVO>> treePrivate(@RequestParam String projectId) {
+        if (ObjectUtil.isNotEmpty(projectId)) {
+            return R.data(iUserService.treePrivate(projectId));
+        }
+        return R.data(null);
+    }
+
 }

+ 2 - 0
blade-service/blade-user/src/main/java/org/springblade/system/user/service/IUserService.java

@@ -7,6 +7,7 @@ import org.springblade.business.vo.InformationQueryVO;
 import org.springblade.core.mp.base.BaseService;
 import org.springblade.core.mp.support.Query;
 import org.springblade.manager.dto.SaveUserInfoByProjectDTO;
+import org.springblade.manager.vo.PrivateTreeVO;
 import org.springblade.manager.vo.WbsTreeContractLazyVO;
 import org.springblade.system.user.dto.UserDTO;
 import org.springblade.system.user.entity.User;
@@ -235,5 +236,6 @@ public interface IUserService extends BaseService<User> {
 
     List<WbsTreeContractLazyVO> queryContractWbsTreeByFirstInfo(String parentId, String contractId, String contractIdRelation);
 
+    List<PrivateTreeVO> treePrivate(String projectId);
 
 }

+ 36 - 7
blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java

@@ -36,10 +36,9 @@ import org.springblade.core.tool.jackson.JsonUtil;
 import org.springblade.core.tool.support.Kv;
 import org.springblade.core.tool.utils.*;
 import org.springblade.manager.dto.SaveUserInfoByProjectDTO;
-import org.springblade.manager.entity.ContractInfo;
-import org.springblade.manager.entity.ContractRelationJlyz;
-import org.springblade.manager.entity.WbsTreeContract;
+import org.springblade.manager.entity.*;
 import org.springblade.manager.feign.ContractClient;
+import org.springblade.manager.vo.PrivateTreeVO;
 import org.springblade.manager.vo.WbsTreeContractLazyQueryInfoVO;
 import org.springblade.manager.vo.WbsTreeContractLazyVO;
 import org.springblade.resource.feign.NewIOSSClient;
@@ -1067,6 +1066,35 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, User> implement
         return null;
     }
 
+    @Override
+    public List<PrivateTreeVO> treePrivate(String projectId) {
+        String sql = "SELECT id,p_key_id,parent_id,node_name FROM m_wbs_tree_private WHERE project_id = ? AND wbs_type = 1 AND type = 1 AND status = 1 AND is_deleted = 0";
+        List<WbsTreePrivate> wbsTreePrivatesNodes = jdbcTemplate.query(sql, new Object[]{projectId}, new BeanPropertyRowMapper<>(WbsTreePrivate.class));
+        return buildTree(wbsTreePrivatesNodes);
+    }
+
+    private List<PrivateTreeVO> buildTree(List<WbsTreePrivate> wbsTreePrivatesNodes) {
+        List<PrivateTreeVO> privateTreeVOS = BeanUtil.copyProperties(wbsTreePrivatesNodes, PrivateTreeVO.class);
+        if (!privateTreeVOS.isEmpty()) {
+            Map<Long, List<PrivateTreeVO>> map = privateTreeVOS.stream().collect(Collectors.groupingBy(PrivateTreeVO::getParentId));
+            List<PrivateTreeVO> list = privateTreeVOS.stream().filter(f -> f.getParentId() == 0L).collect(Collectors.toList());
+            buildChildNodes(list, map);
+            return list;
+        }
+        return null;
+    }
+
+    private void buildChildNodes(List<PrivateTreeVO> list, Map<Long, List<PrivateTreeVO>> map) {
+        for (PrivateTreeVO privateTreeVO : list) {
+            List<PrivateTreeVO> childrenList = map.getOrDefault(privateTreeVO.getId(), null);
+            if (childrenList != null && childrenList.size() > 0) {
+                privateTreeVO.setChildren(childrenList);
+                privateTreeVO.setNotExsitChild(false);
+                buildChildNodes(childrenList, map);
+            }
+        }
+    }
+
     /**
      * 获取当前合同段所有节点缓存
      *
@@ -1192,8 +1220,8 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, User> implement
      * @param nodesAll
      * @return
      */
-    public List<WbsTreeContractLazyVO> getCachedParentCountNodes(String
-                                                                         contractId, List<Long> lowestNodeParentIdsTB, List<WbsTreeContractLazyVO> nodesAll, String tableOwner) {
+    public List<WbsTreeContractLazyVO> getCachedParentCountNodes(String contractId, List<Long> lowestNodeParentIdsTB,
+                                                                 List<WbsTreeContractLazyVO> nodesAll, String tableOwner) {
         //从本地缓存获取数据
         String cacheKey = contractId + "_" + tableOwner;
         List<WbsTreeContractLazyVO> resultParentNodesTB = localCacheParentCountNodes.get(cacheKey);
@@ -1225,8 +1253,9 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, User> implement
      * @param lowestNodeParentIds 最底层节点ParentIds
      * @param nodesAll            所有节点
      */
-    public void recursiveGetParentNodes
-    (List<WbsTreeContractLazyVO> result, List<Long> lowestNodeParentIds, List<WbsTreeContractLazyVO> nodesAll) {
+    public void recursiveGetParentNodes(List<WbsTreeContractLazyVO> result,
+                                        List<Long> lowestNodeParentIds,
+                                        List<WbsTreeContractLazyVO> nodesAll) {
         if (lowestNodeParentIds.isEmpty()) {
             return;
         }