Forráskód Böngészése

Merge branch 'dev' of http://219.151.181.73:3000/zhuwei/bladex into dev

huangtf 3 hónapja
szülő
commit
d3ade5f01b

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

@@ -293,8 +293,11 @@ public class WbsTreeContractController extends BladeController {
     @GetMapping("/syncContractTabSort")
     @ApiOperationSupport(order = 10)
     @ApiOperation(value = "同步项目到合同段所有表单排序", notes = "传入projectId")
-    public R<Object> syncContractTabSort(@RequestParam String projectId) {
-        return R.status(iWbsTreeContractService.syncContractTabSort(projectId));
+    public R<Object> syncContractTabSort(@RequestParam String projectId,@RequestParam Long pKeyId) {
+        if(pKeyId == null){
+            return R.fail("未指定节点");
+        }
+        return R.status(iWbsTreeContractService.syncContractTabSort(projectId,pKeyId));
     }
 
 

+ 12 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.java

@@ -134,4 +134,16 @@ public interface WbsTreeContractMapper extends EasyBaseMapper<WbsTreeContract> {
     List<WbsTreeContract> getNodeTyp6(@Param("pKeyId") Long pkeyId);
 
     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("type") int type,
+                                @Param("projectId") Long projectId,
+                                @Param("pKeyId") Long pKeyId);
 }

+ 26 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.xml

@@ -790,6 +790,32 @@
             where p_key_id = #{item.pKeyId}
         </foreach>
     </update>
+    <update id="updateSortNotIsUseSort">
+        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_deleted = 0
+    </update>
 
     <select id="selectQueryValueLikeNodeName" resultMap="ResultMap">
         select *

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

@@ -65,7 +65,7 @@ public interface IWbsTreeContractService extends BaseService<WbsTreeContract> {
 
     List<WbsTreeContractLazyVO> imageLazyQueryContractWbsTree(String parentId, String contractId, String contractIdRelation, String classId);
 
-    boolean syncContractTabSort(String projectId);
+    boolean syncContractTabSort(String projectId,Long pKeyId);
 
     List<AppWbsTreeContractVO> searchNodeAllTableAndFile(String primaryKeyId, String type, String contractId, String projectId,Integer classify);
 

+ 34 - 19
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,23 +1106,36 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
     }
 
     @Override
-    public boolean syncContractTabSort(String projectId) {
-        if (ObjectUtil.isNotEmpty(projectId)) {
-            List<WbsTreePrivate> tabs = jdbcTemplate.query("select id,p_key_id,sort from m_wbs_tree_private where is_deleted = 0 and sort is not null and wbs_type = 1 and project_id = " + projectId, new BeanPropertyRowMapper<>(WbsTreePrivate.class));
-            List<ContractInfo> contractInfos = jdbcTemplate.query("select id from m_contract_info where is_deleted = 0 and contract_type = 1 and p_id = " + projectId, new BeanPropertyRowMapper<>(ContractInfo.class));
-            for (ContractInfo contractInfo : contractInfos) {
-                for (List<WbsTreePrivate> wbsTreePrivates : Lists.partition(tabs, 1000)) {
-                    try {
-                        this.batchUpdateData(wbsTreePrivates, contractInfo.getId());
-                    } catch (Exception e) {
-                        e.printStackTrace();
-                        throw new ServiceException("保存数据异常,请联系管理员");
-                    }
-                }
-            }
-            return true;
+    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;
         }
-        return false;
+
+
+
+
+        //1、获取指定项目指定节点下的表单信息
+        Long count = wbsTreePrivateMapper.selectCount(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getPId, primaryKeyId).eq(WbsTreePrivate::getType, 1));
+        if(count > 0){
+            throw new RuntimeException("请选择底层节点");
+        }
+
+        baseMapper.updateSortNotIsUseSort(type,Long.valueOf(projectId),primaryKeyId);
+        return true;
     }
 
     @Override

+ 7 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreePrivateServiceImpl.java

@@ -1719,7 +1719,12 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
             List<WbsTreeContract> insertDataContractList = new ArrayList<>();
 
 //            if (("1").equals(wbsTreePrivate.getWbsType())) {
-            if (("public").equals(projectInfo.getReferenceWbsTemplateType())) {
+            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()))
+            ) {
                 /*-------------------------------------质检公有引用同步--------------------------------------------*/
                 //获取当前节点对应的公有引用树下的元素表
                 List<WbsTree> wbsTrees = wbsTreeMapper.selectList(Wrappers.<WbsTree>lambdaQuery()
@@ -1803,7 +1808,7 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                     }
                 }
 
-            } else if (("private").equals(projectInfo.getReferenceWbsTemplateType())) {
+            } else {
                 /*-------------------------------------质检私有引用同步--------------------------------------------*/
                 //根据wbsTreePrivate的wbsId=私有引用的pKeyId来获取引用树根节点
                 WbsTreePrivate wbsTreePrivateRoot = baseMapper.selectOne(Wrappers.<WbsTreePrivate>lambdaQuery()