From 889842eb8b64a0b72c449ce23ff21e4e8c935cae Mon Sep 17 00:00:00 2001
From: 田源 <lastanimals@163.com>
Date: 星期五, 26 七月 2024 16:06:49 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsLinkTypeServiceImpl.java |  162 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 162 insertions(+), 0 deletions(-)

diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsLinkTypeServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsLinkTypeServiceImpl.java
index 7065900..d785735 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsLinkTypeServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsLinkTypeServiceImpl.java
@@ -1,6 +1,7 @@
 package com.vci.web.service.impl;
 
 import com.vci.corba.common.PLException;
+import com.vci.corba.omd.atm.AttributeDef;
 import com.vci.corba.omd.data.BusinessObject;
 import com.vci.corba.omd.ltm.LinkType;
 import com.vci.omd.utils.ObjectTool;
@@ -8,6 +9,7 @@
 import com.vci.starter.web.annotation.log.VciUnLog;
 import com.vci.starter.web.enumpck.VciFieldTypeEnum;
 import com.vci.starter.web.pagemodel.BaseQueryObject;
+import com.vci.starter.web.pagemodel.BaseResult;
 import com.vci.starter.web.pagemodel.DataGrid;
 import com.vci.starter.web.util.BeanUtil;
 import com.vci.starter.web.util.VciBaseUtil;
@@ -321,10 +323,170 @@
     }
 
     /**
+     * 閾炬帴绫诲瀷鐨勫垪琛�
+     *
+     * @return 閾炬帴绫诲瀷鐨勬樉绀哄璞�
+     */
+    @Override
+    public BaseResult<List<LinkType>> gridLink() throws PLException {
+
+        LinkType[] linkTypes = platformClientUtil.getLinkTypeService().getLinkTypes();
+        return BaseResult.dataList(Arrays.asList(linkTypes));
+    }
+    /**
+     * 閾炬帴绫诲瀷淇濆瓨
+     * linkType 閾炬帴绫诲瀷鐨勪繚瀛樺璞�
+     * addFlag 鏄惁涓烘柊澧� true鏂板锛宖alse淇敼
+     * @return 淇濆瓨缁撴灉
+     */
+    @Override
+    public BaseResult addAndEditLink(LinkType linkType, Boolean addFlag) throws PLException {
+        VciBaseUtil.alertNotNull(linkType.name,"璇疯緭鍏ラ摼鎺ョ被鍨嬪悕绉�",linkType.btmItemsFrom,"From绔笟鍔$被鍨嬩笉鑳戒负绌�!",
+                linkType.btmItemsTo,"To绔被鍨嬪潎涓嶈兘涓虹┖!");
+        int maxLength = platformClientUtil.getLinkTypeService().getLTNameMaxLength();
+        if(linkType.name.length() > maxLength){
+            throw new PLException("500",new String[] {"閾炬帴绫诲瀷鍚嶉暱搴︿笉鑳借秴杩�" + maxLength});
+        }
+        if(!linkType.name.matches("^[A-Za-z]+$")){
+            throw new PLException("500",new String[] {"閾炬帴绫诲瀷鍚嶇О鍙兘涓鸿嫳鏂囧瓧姣�"});
+        }
+        LinkType historyLink = platformClientUtil.getLinkTypeService().getLinkType(linkType.name);
+        if(historyLink != null && !historyLink.name.equals("") && addFlag){
+            throw new PLException("500",new String[] {"璇ラ摼鎺ョ被鍨嬪悕绉板凡缁忓瓨鍦�"});
+        }
+        linkType.modifier = WebUtil.getCurrentUserId();
+        if(addFlag){
+            linkType.creator = WebUtil.getCurrentUserId();
+            platformClientUtil.getLinkTypeService().addLinkType(linkType);
+            return BaseResult.success(null,"淇濆瓨鎴愬姛锛�");
+        }
+        ArrayList<String> removeAbList = getRemovedApList(historyLink, linkType);
+        if(removeAbList.size() > 0 && platformClientUtil.getLinkTypeService().hasData(linkType.name)){
+            linkType.attributes = historyLink.attributes;
+            platformClientUtil.getLinkTypeService().modifyLinkType(linkType);
+            throw new PLException("500",new String[] {"绫诲瀷宸叉湁瀹炰緥, 涓嶈繘琛岀Щ闄ゆ搷浣�"});
+        }
+        platformClientUtil.getLinkTypeService().modifyLinkType(linkType);
+        return BaseResult.success(null,"淇濆瓨鎴愬姛锛�");
+    }
+
+
+    /**
+     * 鑾峰彇淇敼閾炬帴绫诲瀷鏃� 鍑忓皯鐨勫睘鎬�
+     * @param oldLt
+     * @param newLt
+     * @return
+     */
+    private ArrayList<String> getRemovedApList(LinkType oldLt,
+                                               LinkType newLt) {
+        String[] oldAbInfo = oldLt.attributes;
+        ArrayList<String> oldNameList = new ArrayList<String>();
+        for(int i = 0; i < oldAbInfo.length; i++){
+            oldNameList.add(oldAbInfo[i]);
+        }
+        String[] newAbInfo = newLt.attributes;
+        ArrayList<String> newNameList = new ArrayList<String>();
+        for(int i = 0; i < newAbInfo.length; i++){
+            newNameList.add(newAbInfo[i]);
+        }
+
+        ArrayList<String> removedApList = new ArrayList<String>();
+
+        for(Iterator<String> iterator = oldNameList.iterator(); iterator.hasNext();){
+            String oldName = iterator.next();
+            if(!newNameList.contains(oldName)){
+                removedApList.add(oldName);
+            }
+        }
+        return removedApList;
+    }
+
+    /**
      * 娓呴櫎缂撳瓨
      */
     @Override
     public void clearCache() {
 
     }
+
+    /**
+     * 淇敼閾炬帴绫诲瀷涓搴斿睘鎬у悕鐨勫睘鎬�
+     * @param apName
+     * @return
+     * @throws PLException
+     */
+    @Override
+    public boolean alterAp(String apName) throws PLException {
+        String[] linkNames = null;
+        List<String> linkNameList = new ArrayList<String>();
+        AttributeDef abItem = null;
+        try {
+            abItem = platformClientUtil.getAttributeService().getAttributeDefByName(apName);
+        } catch (PLException e1) {
+            e1.printStackTrace();
+        }
+        if(abItem == null || abItem.equals("")){
+            return true;
+        }
+        try {
+            linkNames = platformClientUtil.getLinkTypeService().getLTNamesByAPName(apName);
+        } catch (PLException e) {
+            e.printStackTrace();
+        }
+        if(linkNames == null || linkNames.length <= 0){
+            return true;
+        }
+
+        linkNameList = Arrays.asList(linkNames);
+        for(Iterator<String> i = linkNameList.iterator(); i.hasNext();){
+            String linkName = i.next();
+            try {
+                platformClientUtil.getLinkTypeService().modifyLTAttribute(linkName, apName);
+            } catch (PLException e) {
+                // TODO Auto-generated catch block
+                e.printStackTrace();
+                String erreMsg = "璋冩暣閾炬帴绫诲瀷涓��"+apName+"銆戝睘鎬ф椂鍑虹幇閿欒锛屽師鍥狅細"+e.getMessage();
+                logger.error(erreMsg);
+                throw new PLException("500",new String[]{erreMsg});
+            }
+        }
+        return false;
+    }
+
+    /**
+     * 鍒ゆ柇璇ュ睘鎬ф槸鍚﹀凡缁忓湪閾炬帴绫诲瀷涓骇鐢熶簡鏁版嵁
+     * @param abName
+     * @return
+     * @throws PLException
+     */
+    @Override
+    public boolean hasInstance(String abName) throws PLException {
+        String[] btmNames = platformClientUtil.getLinkTypeService().getLTNamesByAPName(abName);
+        if(btmNames == null || btmNames.length == 0){
+            return false;
+        }
+        for(int i = 0; i < btmNames.length; i++){
+            String btmName = btmNames[i];
+            boolean flag;
+            flag = platformClientUtil.getLinkTypeService().hasData(btmName);
+            if(flag){
+                return flag;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * 鑾峰彇杩炴帴绫诲瀷鍚嶇О闆嗗悎
+     * @return
+     */
+    @Override
+    public List<String> getAllLtName() throws PLException {
+        LinkType[] linkTypes = platformClientUtil.getLinkTypeService().getLinkTypes();
+        if(null != linkTypes && linkTypes.length > 0){
+            return Arrays.stream(linkTypes).map(linkType -> linkType.name).collect(Collectors.toList());
+        }
+        return null;
+    }
+
 }

--
Gitblit v1.9.3