Sfoglia il codice sorgente

项目wbs元素表同步相关

liuyc 3 anni fa
parent
commit
cb851c7037

+ 1 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ContractInfoMapper.java

@@ -86,5 +86,6 @@ public interface ContractInfoMapper extends BaseMapper<ContractInfo> {
 
     void deleteContractRelationJLYZ(Long id);
 
+    List<ContractInfo> selectContractIdByProjectId(String projectId);
 
 }

+ 4 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ContractInfoMapper.xml

@@ -323,5 +323,9 @@
         WHERE contract_id_jlyz = #{id}
     </select>
 
+    <select id="selectContractIdByProjectId" resultType="org.springblade.manager.entity.ContractInfo">
+        SELECT id FROM m_contract_info WHERE p_id = #{project_id} AND is_deleted = 0 AND status = 1
+    </select>
+
 
 </mapper>

+ 4 - 3
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.java

@@ -5,6 +5,7 @@ import org.apache.ibatis.annotations.Param;
 import org.springblade.manager.dto.WbsTreePrivateDTO2;
 import org.springblade.manager.dto.WbsTreePrivateDTO3;
 import org.springblade.manager.entity.WbsTree;
+import org.springblade.manager.entity.WbsTreeContract;
 import org.springblade.manager.entity.WbsTreePrivate;
 import org.springblade.manager.vo.WbsNodeTableVO;
 import org.springblade.manager.vo.WbsTreePrivateVO;
@@ -43,9 +44,9 @@ public interface WbsTreePrivateMapper extends BaseMapper<WbsTreePrivate> {
                                 @Param("wbsId") String wbsId);
 
     Integer insertCombination1(@Param("snowId") Long snowId,
-                               @Param("wbsTree") WbsTree wbsTree,
-                               @Param("wbsType") Integer wbsType,
-                               @Param("projectId") String projectId);
+                                       @Param("wbsTree") WbsTree wbsTree,
+                                       @Param("wbsType") Integer wbsType,
+                                       @Param("projectId") String projectId);
 
     Integer insertCombination2(@Param("snowId") Long snowId,
                                @Param("wbsTree") WbsTreePrivate wbsTree,

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

@@ -54,7 +54,7 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
     @Override
     @Transactional(rollbackFor = Exception.class)
     public boolean submit(WbsTreePrivate wbsTreePrivate) {
-        if (wbsTreePrivate.getPKeyId() != null && !("").equals(wbsTreePrivate.getPKeyId())) {
+        if (wbsTreePrivate.getPKeyId() != null) {
             Long pKeyId = wbsTreePrivate.getPKeyId();
             int row = baseMapper.updateByPKeyId(pKeyId, wbsTreePrivate);
 

+ 63 - 4
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeServiceImpl.java

@@ -1113,7 +1113,8 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
         List<String> delIds = idList2.stream().filter(f -> !idList1.contains(f)).collect(Collectors.toList());
 
         if (saveIds.size() == 0 && delIds.size() == 0) {
-            //节点id未变,只进行节点下的元素表的同步
+            //节点id未变,只进行节点下的元素表的同步  1.项目表单同步  2.同步到该项目下所有合同段wbs树
+            //1.项目表单同步
             if (pawDTO.getReferenceType().equals("public")) {
                 //公有同步新增元素表
                 //获取公有wbs树新增的元素表
@@ -1152,13 +1153,25 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
 
                 } else {
                     if (collect2.size() > collect4.size()) {
+                        //获取当前项目下所有施工合同段id
+                        List<ContractInfo> contractInfoIds = contractInfoMapper.selectContractIdByProjectId(pawDTO.getProjectId());
                         //公有同步元素表
                         diffRent1.stream().forEach(tableId -> {
                             WbsTree wbsTree = wbsTreeMapper.selectById(tableId);
                             Long snowId1 = SnowFlakeUtil.getId();
                             wbsTreePrivateMapper.insertCombination1(snowId1, wbsTree, pawDTO.getWbsType(), pawDTO.getProjectId());
-                        });
 
+                            //找到当前新增成功的元素表
+                            WbsTreePrivate wbsTreePrivate = wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getPKeyId, snowId1));
+
+                            //同步到该项目下的所有合同段
+                            for (ContractInfo contractInfoId : contractInfoIds) {
+                                WbsTreeContract wbsTreeContract = getWbsTreeContract(wbsTreePrivate,pawDTO);
+                                wbsTreeContract.setContractId(String.valueOf(contractInfoId.getId()));
+                                wbsTreeContractMapper.insert(wbsTreeContract);
+                            }
+
+                        });
                         return true;
                     }
                 }
@@ -1198,6 +1211,8 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
 
                 } else {
                     if (collect2.size() > collect4.size()) {
+                        //获取当前项目下所有施工合同段id
+                        List<ContractInfo> contractInfoIds = contractInfoMapper.selectContractIdByProjectId(pawDTO.getProjectId());
                         //私有同步元素表
                         List<WbsTreePrivate> lists = new ArrayList<>();
 
@@ -1215,15 +1230,24 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                             list.setPKeyId(SnowFlakeUtil.getId());
                             list.setWbsId(pawDTO.getPrimaryKeyId());
                             list.setProjectId(pawDTO.getProjectId());
+
+                            //同步到该项目下的所有合同段
+                            for (ContractInfo contractInfoId : contractInfoIds) {
+                                WbsTreeContract wbsTreeContract = getWbsTreeContract(list,pawDTO);
+                                wbsTreeContract.setContractId(String.valueOf(contractInfoId.getId()));
+                                wbsTreeContract.setWbsId(pawDTO.getPrimaryKeyId());
+                                wbsTreeContractMapper.insert(wbsTreeContract);
+                            }
+
                         });
 
                         wbsTreePrivateService.saveBatch(lists, 10000);
+
                         return true;
                     }
                 }
             }
 
-
         } else {
             //节点id改变,进行新增或删除节点以及该节点下的元素表
             //1.删除
@@ -1288,7 +1312,6 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
 
             //2.新增
             if (saveIds.size() > 0) {
-
                 //数据初始化节点-引用公有
                 List<WbsTreePrivate> insertData = new ArrayList<>();
                 //数据初始化节点-引用私有
@@ -1441,6 +1464,42 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
         return wbsTreePrivate;
     }
 
+    private WbsTreeContract getWbsTreeContract(WbsTreePrivate wbsTree, WbsTreeContractDTO pawDTO) {
+        WbsTreeContract wbsTreeContract = new WbsTreeContract();
+        //数据初始化-施工合同
+        Long snowId = SnowFlakeUtil.getId();
+        wbsTreeContract.setPKeyId(snowId);
+        wbsTreeContract.setId(wbsTree.getId());
+        wbsTreeContract.setWbsId(pawDTO.getWbsId());
+        wbsTreeContract.setWbsType(wbsTree.getType());
+        wbsTreeContract.setProjectId(pawDTO.getProjectId());
+        wbsTreeContract.setContractType(pawDTO.getContractType());
+        wbsTreeContract.setTenantId(wbsTree.getTenantId());
+        wbsTreeContract.setParentId(wbsTree.getParentId());
+        wbsTreeContract.setAncestors(wbsTree.getAncestors());
+        wbsTreeContract.setDeptName(wbsTree.getDeptName());
+        wbsTreeContract.setDeptCategory(wbsTree.getDeptCategory());
+        wbsTreeContract.setFullName(wbsTree.getDeptName());
+        wbsTreeContract.setSort(wbsTree.getSort());
+        wbsTreeContract.setRemark(wbsTree.getRemark());
+        wbsTreeContract.setType(wbsTree.getType());
+        wbsTreeContract.setTableType(wbsTree.getTableType());
+        wbsTreeContract.setStatus(wbsTree.getStatus());
+        wbsTreeContract.setIsDeleted(wbsTree.getIsDeleted());
+        wbsTreeContract.setUniqueCode(wbsTree.getUniqueCode());
+        wbsTreeContract.setPartitionCode(wbsTree.getPartitionCode());
+        wbsTreeContract.setIsConcrete(wbsTree.getIsConcrete());
+        wbsTreeContract.setIsExpernode(wbsTree.getIsExpernode());
+        wbsTreeContract.setTableOwner(wbsTree.getTableOwner());
+        wbsTreeContract.setMajorDataType(wbsTree.getMajorDataType());
+        wbsTreeContract.setInitTableName(wbsTree.getInitTableName());
+        wbsTreeContract.setIsLinkTable(wbsTree.getIsLinkTable());
+        wbsTreeContract.setExcelId(wbsTree.getExcelId());
+        wbsTreeContract.setHtmlUrl(wbsTree.getHtmlUrl());
+        wbsTreeContract.setIsBussShow("1");
+        return wbsTreeContract;
+    }
+
     @Override
     public WbsTreeAllListVO findWbsTreeList(Integer type) {
         WbsTreeAllListVO wbsTreeAllListVO = new WbsTreeAllListVO();