From a756aed2072b98ed02967ddf2b013fc77be65f94 Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期四, 31 十月 2024 09:42:19 +0800
Subject: [PATCH] 修改业务类型类型改变时和业务类型移除属性时校验逻辑

---
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsBtmServiceImpl.java |   70 +++++++++++++++++++++++++++-------
 1 files changed, 55 insertions(+), 15 deletions(-)

diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsBtmServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsBtmServiceImpl.java
index c73204c..2eff972 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsBtmServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsBtmServiceImpl.java
@@ -152,7 +152,22 @@
     @VciUnLog
     public List<OsBtmTypeVO> selectAllBtm() {
         try {
-            return btmDO2VOs(Arrays.stream(platformClientUtil.getBtmService().getBizTypes("")).collect(Collectors.toList()));
+            return btmDO2VOs(Arrays.stream(platformClientUtil.getBtmService().getBizTypes("")).collect(Collectors.toList()),null);
+        } catch (PLException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    /**
+     * 鏌ヨ鎵�鏈夌殑涓氬姟绫诲瀷
+     *
+     * @return 涓氬姟绫诲瀷瀵硅薄
+     */
+    @Override
+    @VciUnLog
+    public List<OsBtmTypeVO> selectAllBtm(Map<String, OsAttributeVO> attributeVOMap) {
+        try {
+            return btmDO2VOs(Arrays.stream(platformClientUtil.getBtmService().getBizTypes("")).collect(Collectors.toList()),attributeVOMap);
         } catch (PLException e) {
             throw new RuntimeException(e);
         }
@@ -168,6 +183,16 @@
     public Map<String, OsBtmTypeVO> selectAllBtmMap() {
         return Optional.ofNullable(self.selectAllBtm()).orElseGet(() -> new ArrayList<OsBtmTypeVO>()).stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(), t -> t, (o1, o2) -> o1));
     }
+    /**
+     * 鏌ヨ鎵�鏈夌殑涓氬姟绫诲瀷鏄犲皠
+     *
+     * @return key 鏄笟鍔$殑鑻辨枃鍚嶇О鐨勫皬鍐�
+     */
+    @Override
+    @VciUnLog
+    public Map<String, OsBtmTypeVO> selectAllBtmMap(Map<String, OsAttributeVO> attributeVOMap) {
+        return Optional.ofNullable(self.selectAllBtm(attributeVOMap)).orElseGet(() -> new ArrayList<OsBtmTypeVO>()).stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(), t -> t, (o1, o2) -> o1));
+    }
 
     /**
      * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
@@ -176,10 +201,10 @@
      * @return 鏄剧ず瀵硅薄
      */
     @Override
-    public List<OsBtmTypeVO> btmDO2VOs(Collection<BizType> btmItems) {
+    public List<OsBtmTypeVO> btmDO2VOs(Collection<BizType> btmItems,Map<String, OsAttributeVO> attributeVOMap) {
         List<OsBtmTypeVO> VOS = new ArrayList<>();
         Optional.ofNullable(btmItems).orElseGet(() -> new ArrayList<>()).stream().forEach(btmItem -> {
-            OsBtmTypeVO vo = btmDO2VO(btmItem);
+            OsBtmTypeVO vo = btmDO2VO(btmItem,attributeVOMap);
             VOS.add(vo);
         });
         return VOS;
@@ -192,7 +217,7 @@
      * @return 鏄剧ず瀵硅薄
      */
     @Override
-    public OsBtmTypeVO btmDO2VO(BizType btmItem) {
+    public OsBtmTypeVO btmDO2VO(BizType btmItem, Map<String, OsAttributeVO> attributeVOMap) {
         OsBtmTypeVO vo = new OsBtmTypeVO();
         if (btmItem != null) {
             vo.setOid(btmItem.oid);
@@ -226,7 +251,7 @@
             }
             vo.setLifeCycleIds(Arrays.stream(btmItem.lifeCycles).collect(Collectors.joining(",")));
             vo.setApNameArray(btmItem.apNameArray);
-            List<OsAttributeVO> attributeVOS = attributeService.listAttrByIds(Arrays.stream(btmItem.apNameArray).collect(Collectors.toList()));
+            List<OsAttributeVO> attributeVOS = attributeService.listAttrByIds(Arrays.stream(btmItem.apNameArray).collect(Collectors.toList()),attributeVOMap);
             List<OsBtmTypeAttributeVO> btmTypeAttributeVOS = new ArrayList<>();
             Optional.ofNullable(attributeVOS).orElseGet(() -> new ArrayList<>()).stream().forEach(attributeVO -> {
                 OsBtmTypeAttributeVO btmTypeAttributeVO = new OsBtmTypeAttributeVO();
@@ -287,6 +312,19 @@
             return null;
         }
         return self.selectAllBtmMap().getOrDefault(id.toLowerCase(), null);
+    }
+    /**
+     * 浣跨敤缂栧彿鑾峰彇涓氬姟绫诲瀷
+     *
+     * @param id 缂栧彿
+     * @return 涓氬姟绫诲瀷
+     */
+    @Override
+    public OsBtmTypeVO getBtmById(String id,Map<String, OsAttributeVO> attributeVOMap) {
+        if (StringUtils.isBlank(id)) {
+            return null;
+        }
+        return self.selectAllBtmMap(attributeVOMap).getOrDefault(id.toLowerCase(), null);
     }
 
     /**
@@ -366,7 +404,7 @@
             return new ArrayList<>();
         }
         BizType bizType = bizTypes[0];
-        OsBtmTypeVO btmTypeVO = btmDO2VO(bizType);
+        OsBtmTypeVO btmTypeVO = btmDO2VO(bizType,null);
         List<OsBtmTypeAttributeVO> attributes = btmTypeVO.getAttributes();
         if (attributes == null) {
             attributes = new ArrayList<>();
@@ -457,7 +495,6 @@
 
     /**
      * 鍒ゆ柇璇ュ睘鎬ф槸鍚﹀凡缁忓湪涓氬姟绫诲瀷涓骇鐢熶簡鏁版嵁
-     *
      * @param abName
      * @return
      * @throws PLException
@@ -646,7 +683,7 @@
         List<Tree> rootTreeList = new ArrayList<>();
         BizType[] bizTypes = getBizTypes("");
         OsBtmTypeVO osBtmTypeVO = null;
-        List<OsBtmTypeVO> osBtmTypeVOS = btmDO2VOs(Arrays.asList(bizTypes));
+        List<OsBtmTypeVO> osBtmTypeVOS = btmDO2VOs(Arrays.asList(bizTypes),null);
         for (int i = 0; i < osBtmTypeVOS.size(); i++) {
             osBtmTypeVO = osBtmTypeVOS.get(i);
 
@@ -656,6 +693,7 @@
                 tree.setParentName(null);
                 tree.setParentId(null);
                 tree.setLeaf(true);
+                tree.setId(osBtmTypeVO.getId());
                 tree.setText(osBtmTypeVO.getDescription());
                 tree.setAttributes(WebUtil.objectToMapString(osBtmTypeVO));
                 tree.setChildren(getChildren(osBtmTypeVOS, osBtmTypeVO));
@@ -917,14 +955,14 @@
         String[] unRemovableFields = null;
         List<String> unRemovableFields_ = null;
         //闇�瑕佺Щ闄ょ殑灞炴��
-        List<String> removableFields = null;
+        List<String> removableFields = new ArrayList<>();
         //淇敼鍓嶄笟鍔$被鍨嬪湪鏁版嵁搴撲腑宸插瓨鍦ㄧ殑鎵�鏈夊睘鎬�
-        String[] apNameArray = btmTypeDTO.getApNameArray().split(",");
+        List<String> apNameArray = Func.toStrList(btmTypeDTO.getApNameArray());
         Set<String> dbApNameArray = Arrays.stream(dbBizType.apNameArray)
                 .collect(Collectors.toSet());
         //杩囨护鍑洪渶瑕佺Щ闄ょ殑灞炴��
-        removableFields = Arrays.stream(apNameArray)
-                .filter(ap -> !dbApNameArray.contains(ap))   // 杩囨护涓嶅湪 dbApSet 涓殑鍏冪礌
+        removableFields = dbApNameArray.stream()
+                .filter(ap -> !apNameArray.contains(ap))   // 杩囨护涓嶅湪 dbApSet 涓殑鍏冪礌
                 .collect(Collectors.toList());
         // 褰撲笟鍔$被鍨嬭〃涓煇灞炴�у凡缁忔湁鍊�, 涓嶅垹闄よ灞炴��, 灏嗗凡缁忕Щ闄ょ殑灞炴�ф坊鍔犲洖鏉�
         unRemovableFields = platformClientUtil.getBtmService().getUnRemovableFields(id, removableFields.toArray(new String[0]));
@@ -933,7 +971,9 @@
             if (this.hasInstanceByBtmName(id)) {
                 //涓氬姟绫诲瀷宸叉湁瀹炰緥, 鍙兘鍒犻櫎娌℃湁鏁版嵁鐨勫垪
                 if (unRemovableFields != null && unRemovableFields.length > 0) {
-                    unRemovableFields_ = Arrays.asList(unRemovableFields);
+                    //绉婚櫎浜嗕笉鍙慨鏀圭殑灞炴�х洿鎺ユ姤閿欙紝灏变笉寰�涓嬫墽琛屼簡
+                    throw new VciBaseException("涓氬姟绫诲瀷宸叉湁瀹炰緥, 鍙兘鍒犻櫎娌℃湁鏁版嵁鐨勫垪");
+                    /*unRemovableFields_ = Arrays.asList(unRemovableFields);
                     for (int i = 0; i < removableFields.size(); i++) {
                         String abName = removableFields.get(i);
                         if (unRemovableFields_.contains(abName)) {
@@ -941,7 +981,7 @@
                                 lastAttrList.add(abName);
                             }
                         }
-                    }
+                    }*/
                 }
             }
         }
@@ -1537,7 +1577,7 @@
         //boolean flag = DDLToolClient.getService().hasInstanceOralce(tableName);
         boolean flag = false;
         try {
-            flag = ClientServiceProvider.getOMDService().getBTMService().hasData(btmName);
+            flag = platformClientUtil.getBtmService().hasData(btmName);
         } catch (PLException e) {
             // TODO Auto-generated catch block
             e.printStackTrace();

--
Gitblit v1.9.3