Kaynağa Gözat

同步项目底层节点表单顺序功能修改--需要同步更新前端(调整)

LHB 3 ay önce
ebeveyn
işleme
1f9d7649b3

+ 7 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.java

@@ -136,9 +136,14 @@ public interface WbsTreeContractMapper extends EasyBaseMapper<WbsTreeContract> {
     EKeyDto getEKey(@Param("contractId") String contractId, @Param("pKeyId") Long pKeyId, @Param("wbsId") String wbsId);
 
     /**
-     * 同步项目排序到合同段
+     * 拉去模板的表单顺序到项目和合同 合同如果进行了人工排序则不允许修改排序
+     * @param type 项目的模板引用的类型
+     *             0:公有
+     *             1:私有
+     * @param projectId 项目id
      * @param pKeyId
      */
-    void updateSortNotIsUseSort(@Param("projectId") Long projectId,
+    void updateSortNotIsUseSort(@Param("type") int type,
+                                @Param("projectId") Long projectId,
                                 @Param("pKeyId") Long pKeyId);
 }

+ 21 - 5
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.xml

@@ -791,13 +791,29 @@
         </foreach>
     </update>
     <update id="updateSortNotIsUseSort">
-        UPDATE m_wbs_tree_contract a
-            INNER JOIN ( SELECT * FROM m_wbs_tree_private WHERE p_id = #{pKeyId} AND is_deleted = 0 ) b ON a.is_type_private_pid = b.p_key_id
-            SET a.sort = b.sort
+        update
+            m_wbs_tree_contract a
+            INNER JOIN m_wbs_tree_private b ON a.is_type_private_pid = b.p_key_id and b.p_id = #{pKeyId} and b.is_deleted = 0
+            <choose>
+                <when test="type == 0">
+                    INNER JOIN m_wbs_tree d ON d.id = b.tree_p_id
+                </when>
+                <otherwise>
+                    INNER JOIN m_wbs_tree_private c ON c.p_key_id = b.wbs_id  and c.wbs_type = b.wbs_type
+                    INNER JOIN m_wbs_tree_private d ON c.wbs_id = d.wbs_id and c.project_id = d.project_id and b.tree_p_id = d.tree_p_id
+                </otherwise>
+            </choose>
+            SET
+                b.sort = c.sort,
+                a.sort = (
+                    CASE
+                    WHEN a.is_use_sort IS NULL OR a.is_use_sort != 1 THEN d.sort
+                    ELSE a.sort
+                    END
+                )
+
         WHERE
             a.project_id = #{projectId}
-          AND a.is_use_sort IS NULL
-           OR a.is_use_sort != 1
           AND a.is_deleted = 0
     </update>
 

+ 30 - 6
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeContractServiceImpl.java

@@ -1,6 +1,7 @@
 package org.springblade.manager.service.impl;
 
 import cn.hutool.core.date.DateTime;
+import cn.hutool.core.lang.func.LambdaUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
@@ -52,9 +53,7 @@ import org.springblade.manager.entity.*;
 import org.springblade.manager.excel.WbsExcelBatchUtil;
 import org.springblade.manager.excel.WbsExcelUtil;
 import org.springblade.manager.feign.ContractClient;
-import org.springblade.manager.mapper.ContractInfoMapper;
-import org.springblade.manager.mapper.WbsTreeContractMapper;
-import org.springblade.manager.mapper.WbsTreePrivateMapper;
+import org.springblade.manager.mapper.*;
 import org.springblade.manager.service.ITableFileService;
 import org.springblade.manager.service.IWbsParamService;
 import org.springblade.manager.service.IWbsTreeContractService;
@@ -105,6 +104,7 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
     private final BladeRedis bladeRedis;
     private final ConstructionLedgerFeignClient constructionLedgerFeign;
     private final WbsTreePrivateMapper wbsTreePrivateMapper;
+    private final ProjectInfoMapper projectInfoMapper;
     private final ContractInfoMapper contractInfoMapper;
     private final JdbcTemplate jdbcTemplate;
     private final InformationQueryClient informationQueryClient;
@@ -124,6 +124,8 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
     private final Map<String, List<WbsTreeContractLazyQueryInfoVO>> localCacheQueryInfos = new ConcurrentHashMap<>();
     //存储当前合同段contractId_tableOwner对应的节点数量统计缓存信息
     private final Map<String, List<WbsTreeContractLazyVO>> localCacheParentCountNodes = new ConcurrentHashMap<>();
+    @Autowired
+    private WbsTreeMapper wbsTreeMapper;
 
     @Override
     public List<WbsTreeContract> selectQueryCurrentNodeByAncestors(List<String> ids, String contractId) {
@@ -1104,13 +1106,35 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
     }
 
     @Override
-    public boolean syncContractTabSort(String projectId,Long pKeyId) {
+    public boolean syncContractTabSort(String projectId,Long primaryKeyId) {
+
+        //获取当前节点对应节点信息
+        WbsTreePrivate wbsTreePrivate = wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getPKeyId, primaryKeyId));
+        //获取项目信息
+        ProjectInfo projectInfo = projectInfoMapper.selectOne(Wrappers.<ProjectInfo>lambdaQuery().eq(ProjectInfo::getId, wbsTreePrivate.getProjectId()));
+        Integer type = 0;
+        if (
+                ("1".equals(wbsTreePrivate.getWbsType()) && ("public").equals(projectInfo.getReferenceWbsTemplateType()))   ||
+                ("2".equals(wbsTreePrivate.getWbsType()) && ("public").equals(projectInfo.getReferenceWbsTemplateTypeTrial()))   ||
+                ("3".equals(wbsTreePrivate.getWbsType()) && ("public").equals(projectInfo.getReferenceWbsTemplateTypeMeter()))   ||
+                ("5".equals(wbsTreePrivate.getWbsType()) && ("public").equals(projectInfo.getReferenceWbsTemplateTypeLar()))
+        ) {
+            type = 0;
+
+        }else{
+            type = 1;
+        }
+
+
+
+
         //1、获取指定项目指定节点下的表单信息
-        Long count = wbsTreePrivateMapper.selectCount(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getPId, pKeyId).eq(WbsTreePrivate::getType, 1));
+        Long count = wbsTreePrivateMapper.selectCount(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getPId, primaryKeyId).eq(WbsTreePrivate::getType, 1));
         if(count > 0){
             throw new RuntimeException("请选择底层节点");
         }
-        baseMapper.updateSortNotIsUseSort(Long.valueOf(projectId),pKeyId);
+
+        baseMapper.updateSortNotIsUseSort(type,Long.valueOf(projectId),primaryKeyId);
         return true;
     }