From 986aa62ed00bee39363bab41b4eeb8259d446efd Mon Sep 17 00:00:00 2001
From: ludc <ludc@vci-tech.com>
Date: 星期四, 16 一月 2025 18:20:32 +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 |  113 ++++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 89 insertions(+), 24 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 2c23e3f..a3c265f 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
@@ -4,19 +4,17 @@
 import cn.hutool.core.util.ZipUtil;
 import com.fasterxml.jackson.core.type.TypeReference;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import com.vci.common.qt.object.QTConstants;
 import com.vci.constant.FrameWorkLangCodeConstant;
 import com.vci.corba.common.PLException;
 import com.vci.corba.omd.atm.AttributeDef;
 import com.vci.corba.omd.btm.BizType;
 import com.vci.corba.omd.data.BusinessObject;
 import com.vci.corba.omd.ltm.LinkType;
-import com.vci.corba.omd.ltm.LinkTypeServicePrx;
-import com.vci.dto.OsAttributeDTO;
+import com.vci.model.OsLinkTypeDO;
 import com.vci.omd.constants.AttributeConstants;
-import com.vci.omd.constants.LinkTypeConstants;
 import com.vci.omd.utils.ObjectTool;
 import com.vci.pagemodel.*;
-import com.vci.po.OsAttributePO;
 import com.vci.po.OsLinkTypePO;
 import com.vci.starter.poi.bo.ReadExcelOption;
 import com.vci.starter.poi.bo.WriteExcelData;
@@ -24,19 +22,16 @@
 import com.vci.starter.poi.constant.ExcelLangCodeConstant;
 import com.vci.starter.poi.util.ExcelUtil;
 import com.vci.starter.web.annotation.log.VciUnLog;
-import com.vci.starter.web.enumpck.ResultCodeEnum;
 import com.vci.starter.web.enumpck.VciFieldTypeEnum;
 import com.vci.starter.web.exception.VciBaseException;
 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.*;
-import com.vci.model.OsLinkTypeDO;
+import com.vci.starter.web.util.Lcm.Func;
 import com.vci.web.service.*;
-import com.vci.web.util.Func;
 import com.vci.web.util.PlatformClientUtil;
 import com.vci.web.util.WebUtil;
-import javafx.scene.shape.HLineTo;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -47,17 +42,17 @@
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
-import java.io.*;
+import java.io.File;
+import java.io.IOException;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.*;
-import java.util.function.Function;
 import java.util.stream.Collectors;
 
 /**
  * 閾炬帴绫诲瀷鏈嶅姟
  * @author weidy
- * @date 2021-2-15
+ * @date 2024-2-15
  */
 @Service
 public class OsLinkTypeServiceImpl implements OsLinkTypeServiceI {
@@ -76,7 +71,6 @@
      * 鏃ュ織
      */
     private Logger logger = LoggerFactory.getLogger(getClass());
-
 
     /**
      * 骞冲彴鐨勮皟鐢ㄥ伐鍏风被
@@ -179,7 +173,7 @@
             }
             vo.setDescription(linkType.description);
             vo.setId(linkType.name);
-            vo.setName(linkType.tag);
+            vo.setName(linkType.label);
             vo.setFromBtmTypeVOS(btmService.listBtmByIds(Arrays.stream(linkType.btmItemsFrom).collect(Collectors.toSet())));
             if(!CollectionUtils.isEmpty(vo.getFromBtmTypeVOS())){
                 vo.setFromBtmType(Arrays.stream(linkType.btmItemsFrom).collect(Collectors.joining(",")));
@@ -196,7 +190,7 @@
             List<OsLinkTypeAttributeVO> linkTypeAttributeVOS = new ArrayList<>();
             Optional.ofNullable(attributeVOS).orElseGet(()->new ArrayList<>()).stream().forEach(attributeVO->{
                 OsLinkTypeAttributeVO linkTypeAttributeVO = new OsLinkTypeAttributeVO();
-                BeanUtil.convert(attributeVO,linkTypeAttributeVO);
+                BeanUtilForVCI.convert(attributeVO,linkTypeAttributeVO);
                 linkTypeAttributeVO.setPkLinkType(vo.getOid());
                 if(StringUtils.isNotBlank(attributeVO.getBtmTypeId())){
                     linkTypeAttributeVO.setReferFlag(true);
@@ -241,11 +235,12 @@
      * @return 閾炬帴绫诲瀷
      */
     @Override
-    public OsLinkTypeVO getLinkTypeById(String id) {
+    public OsLinkTypeVO getLinkTypeById(String id) throws PLException {
         if(StringUtils.isBlank(id)){
             return null;
         }
-        return self.selectAllLinkMap().getOrDefault(id.toLowerCase(),null);
+        LinkType linkType = platformClientUtil.getLinkTypeService().getLinkType(id);
+        return this.linkTypeDO2VO(linkType);
     }
 
     /**
@@ -255,7 +250,7 @@
      * @return 閾炬帴绫诲瀷鐨勫睘鎬�
      */
     @Override
-    public List<OsLinkTypeAttributeVO> listAttributeByLinkId(String linkTypeId) {
+    public List<OsLinkTypeAttributeVO> listAttributeByLinkId(String linkTypeId) throws PLException {
         OsLinkTypeVO linkTypeVO = getLinkTypeById(linkTypeId);
         return linkTypeVO.getAttributes();
     }
@@ -319,7 +314,7 @@
                     }
                     OsBtmTypeAttributeVO attributeVO = attributeVOMap.getOrDefault(attrId.toLowerCase(Locale.ROOT), null);
                     if(attributeVO!=null){
-                        String vtType = attributeVO.getAttrDataType();
+                        String vtType = attributeVO.getAttributeDataType();
                         String attrType = "";
                         VciFieldTypeEnum fieldTypeEnum = VciFieldTypeEnum.forValue(vtType);
                         if(fieldTypeEnum == null) {
@@ -548,7 +543,7 @@
             for (String name : names.split(",")) {
                 LinkType lt = platformClientUtil.getLinkTypeService().getLinkType(name);
                 excelDataList.add(new WriteExcelData(i+1,0, lt.name));
-                excelDataList.add(new WriteExcelData(i+1,1, lt.tag));
+                excelDataList.add(new WriteExcelData(i+1,1, lt.label));
                 excelDataList.add(new WriteExcelData(i+1,2, lt.implClass));
                 excelDataList.add(new WriteExcelData(i+1,3, lt.shape));
                 excelDataList.add(new WriteExcelData(i+1,4, String.join(",",lt.btmItemsFrom)));
@@ -611,7 +606,7 @@
                 return BaseResult.fail(FrameWorkLangCodeConstant.IMPORT_FAIL, new String[]{"娌℃湁瀵煎叆鐨勫睘鎬ф枃浠躲�傚鍏ョ粓姝紒"});
             }
         }
-        BaseResult baseResult = attributeService.importAttributes(attrExcel);
+        BaseResult baseResult = attributeService.importAttributes(attrExcel,true);
         if(!baseResult.isSuccess()){
             //鍒犻櫎涓婁紶鐨勬枃浠跺す
             FileUtil.del(defaultTempFolder + File.separator);
@@ -648,7 +643,7 @@
                 }else if(!osLinkTypePO.getName().matches("^[A-Za-z]+$")){
                     throw new VciBaseException("绗��"+osLinkTypePO.getRowIndex()+"銆戣锛岄摼鎺ョ被鍨嬪悕绉板彧鑳戒负鑻辨枃瀛楁瘝");
                 }else if(excelReapeat.containsKey(osLinkTypePO.getName())){//灞炴�у悕琛ㄦ牸涓垽閲�
-                    throw new VciBaseException("绗��"+excelReapeat.get(osLinkTypePO.getName())+"銆戣鍜岀銆�"+osLinkTypePO.getRowIndex()+"銆戣鏁版嵁锛屽睘鎬у悕閲嶅");
+                    throw new VciBaseException("绗��"+excelReapeat.get(osLinkTypePO.getName())+"銆戣鍜岀銆�"+osLinkTypePO.getRowIndex()+"銆戣鏁版嵁锛岄摼鎺ョ被鍨嬪悕閲嶅");
                 }
                 try {
                     LinkType historyLink = platformClientUtil.getLinkTypeService().getLinkType(osLinkTypePO.getName());
@@ -673,7 +668,7 @@
                 linkType.relationTo = osLinkTypePO.getRelationTo();
                 linkType.relation = osLinkTypePO.getRelationFrom() + ":" + osLinkTypePO.getRelationTo();
                 linkType.description = osLinkTypePO.getDescription();
-                linkType.tag = osLinkTypePO.getTag();
+                linkType.label = osLinkTypePO.getTag();
                 linkType.shape = osLinkTypePO.getShape();
                 linkType.implClass = osLinkTypePO.getImplClass();
                 linkType.modifier = WebUtil.getCurrentUserId();
@@ -687,7 +682,7 @@
             });
         }catch (Exception e){
             if(logger.isErrorEnabled()){
-                logger.error("璇诲彇excel鍐呭鏃舵垨淇濆瓨鐢ㄦ埛淇℃伅鏃跺嚭鐜颁簡閿欒锛屽叿浣撳師鍥狅細",VciBaseUtil.getExceptionMessage(e));
+                logger.error("璇诲彇excel鍐呭鏃舵垨淇濆瓨閾炬帴绫诲瀷淇℃伅鏃跺嚭鐜颁簡閿欒锛屽叿浣撳師鍥狅細",VciBaseUtil.getExceptionMessage(e));
             }
             e.printStackTrace();
             return BaseResult.fail(VciBaseUtil.getExceptionMessage(e),new String[]{},e);
@@ -751,6 +746,31 @@
             links.add(vo);
         }
         return links;
+    }
+    /**
+     * 鑾峰彇璁剧疆鎺掑簭瀛楁鐨勬帓搴忓瓧娈�
+     * @param linkType 閾炬帴绫诲瀷鐨勭紪鍙�
+     * @param btmType 涓氬姟绫诲瀷鐨勭紪鍙�
+     * @param direction 姝�/鍙嶅悜
+     * @return 灞炴�х殑淇℃伅
+     */
+    @Override
+    public List<String> getAllOrderbyAttributeByLink(String linkType, String btmType, String direction) throws PLException, ParseException {
+        List<String> abNames = new ArrayList<>(Arrays.asList("OID", "Creator", "CreateTime", "LastModifier", "LASTMODIFYTIME", "F_OID",
+                "F_REVISIONOID", "F_NAMEOID", "F_BtwName", "T_OID", "T_REVISIONOID", "T_NAMEOID", "T_BtwName", "TS" ));
+        AttributeDef[] attributes = platformClientUtil.getLinkTypeService().getAttributes(linkType);
+        for (AttributeDef attribute : attributes) {
+            abNames.add(String.valueOf(attribute.name));
+        }
+        String wrapper = "T_OID.";
+        if(direction.equals(QTConstants.DIRECTION_OPPOSITE)){
+            wrapper = "F_OID.";
+        }
+        List<OsBtmTypeAttributeVO> bizTypeQTDs = btmService.getBizTypeQTDs(btmType);
+        for (OsBtmTypeAttributeVO bizTypeQTD : bizTypeQTDs) {
+            abNames.add(wrapper + bizTypeQTD.getId());
+        }
+        return abNames;
     }
 
     /**
@@ -949,7 +969,7 @@
                 throw new PLException("500",new String[]{erreMsg});
             }
         }
-        return false;
+        return true;
     }
 
     /**
@@ -988,4 +1008,49 @@
         return null;
     }
 
+    /**
+     * 鑾峰彇浣跨敤璇ヤ笟鍔$被鍨嬬殑閾炬帴绫诲瀷鍚�
+     * @param btmName 涓氬姟绫诲瀷鍚嶇О
+     * @return
+     */
+    @Override
+    public List<String> getUsedBtmLinkList(String btmName) {
+        try {
+            List<String> list = new ArrayList<String>();
+            LinkType[] linkTypes = platformClientUtil.getLinkTypeService().getLinkTypes();
+            for(int i = 0; i < linkTypes.length; i++){
+                LinkType linkType = linkTypes[i];
+                if(this.containsBtm(linkType, btmName)){
+                    list.add(linkType.name);
+                }
+            }
+            return list;
+        } catch (PLException e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    /**
+     * 鎸囧畾鐨勯摼鎺ョ被鍨嬫槸鍚︿娇鐢ㄤ簡鎸囧畾鐨勪笟鍔$被鍨�
+     * @param link
+     * @param btmName
+     * @return
+     */
+    private boolean containsBtm(LinkType link, String btmName){
+        String[] btms = link.btmItemsFrom;
+        for(int i = 0; i < btms.length; i++){
+            if(btmName.equalsIgnoreCase(btms[i])){
+                return true;
+            }
+        }
+        btms = link.btmItemsTo;
+        for(int i = 0; i < btms.length; i++){
+            if(btmName.equalsIgnoreCase(btms[i])){
+                return true;
+            }
+        }
+        return false;
+    }
+
 }

--
Gitblit v1.9.3