From 68fd566d21b3efc3a670a5295289b1801f5a4155 Mon Sep 17 00:00:00 2001
From: ludc <ludc@vci-tech.com>
Date: 星期四, 16 一月 2025 18:18:55 +0800
Subject: [PATCH] 流程部署接口上传

---
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsQueryTemplateImpl.java |  127 ++++++++++++++++++++---------------------
 1 files changed, 62 insertions(+), 65 deletions(-)

diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsQueryTemplateImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsQueryTemplateImpl.java
index 5b993f0..666d847 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsQueryTemplateImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsQueryTemplateImpl.java
@@ -1,11 +1,8 @@
 package com.vci.web.service.impl;
 
 import cn.hutool.core.io.FileUtil;
-import cn.hutool.core.util.ZipUtil;
 import com.alibaba.fastjson.JSONObject;
-import com.vci.client.ClientSession;
 import com.vci.client.common.oq.OQTool;
-import com.vci.client.common.providers.ClientServiceProvider;
 import com.vci.common.qt.object.*;
 import com.vci.constant.FrameWorkLangCodeConstant;
 import com.vci.corba.common.PLException;
@@ -19,42 +16,32 @@
 import com.vci.dto.*;
 import com.vci.omd.constants.SystemAttribute;
 import com.vci.omd.objects.OtherInfo;
-import com.vci.po.OsLinkTypePO;
-import com.vci.starter.poi.bo.ReadExcelOption;
-import com.vci.starter.poi.bo.WriteExcelData;
-import com.vci.starter.poi.bo.WriteExcelOption;
-import com.vci.starter.poi.constant.ExcelLangCodeConstant;
-import com.vci.starter.poi.util.ExcelUtil;
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.pagemodel.BaseResult;
 import com.vci.starter.web.pagemodel.DataGrid;
-import com.vci.starter.web.pagemodel.Tree;
-import com.vci.starter.web.util.*;
+import com.vci.starter.web.util.ControllerUtil;
+import com.vci.starter.web.util.Lcm.DateUtil;
+import com.vci.starter.web.util.Lcm.Func;
+import com.vci.starter.web.util.LocalFileUtil;
+import com.vci.starter.web.util.VciBaseUtil;
 import com.vci.web.other.BtmQTExportData;
 import com.vci.web.other.LinkQTExportData;
-import com.vci.web.service.*;
-import com.vci.web.util.DateUtil;
-import com.vci.web.util.Func;
+import com.vci.web.service.OsQuereyTemplateServiceI;
 import com.vci.web.util.PlatformClientUtil;
 import com.vci.web.util.WebUtil;
+import com.vci.web.utility.AttributeDataFetcher;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.time.DateFormatUtils;
-import org.dom4j.Document;
 import org.dom4j.DocumentException;
 import org.dom4j.DocumentHelper;
 import org.dom4j.Element;
-import org.jdesktop.swingx.JXDatePicker;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import org.springframework.util.CollectionUtils;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
-import javax.swing.*;
-import java.awt.*;
 import java.io.*;
 import java.util.*;
-import java.util.List;
 import java.util.stream.Collectors;
 
 /**
@@ -98,7 +85,8 @@
         }else {
             qtdArray = platformClientUtil.getQTDService().getBizTypeQTDs(btmName);
         }
-        return BaseResult.dataList(Arrays.asList(qtdArray));
+        List<QTD> qtdList = Arrays.asList(qtdArray).stream().sorted(Comparator.comparing(s -> s.name,String.CASE_INSENSITIVE_ORDER)).collect(Collectors.toList());
+        return BaseResult.dataList(qtdList);
     }
 
     /**
@@ -122,6 +110,7 @@
             throw new PLException("500", new String[]{"澧炲姞涓氬姟绫诲瀷鏌ヨ妯℃澘澶辫触"});
         }
     }
+
     /**
      * 淇敼鏌ヨ妯℃澘
      * @param qtd 鏌ヨ妯℃澘瀹炰綋绫�
@@ -161,6 +150,7 @@
             return BaseResult.fail("鍒犻櫎鏌ヨ妯℃澘澶辫触");
         }
     }
+
     /**
      * @param qtInfoDTO 浼犺緭鐨勬暟鎹璞★細
      *                linkTypeName 閾炬帴绫诲瀷銆�
@@ -193,6 +183,9 @@
     public BaseResult getObjTypeQTs(String btName) throws PLException, DocumentException {
         VciBaseUtil.alertNotNull(btName,"绫诲瀷鍚�");
         QTInfo[] objTypeQTs = platformClientUtil.getQTDService().getObjTypeQTs(btName);
+        if(Func.isEmpty(objTypeQTs)){
+            return BaseResult.success();
+        }
         List<QTInfoDTO> dtos = new ArrayList<>();
         Map<String, AttributeDef> allSysAttr = Arrays.stream(platformClientUtil.getBtmService().getSysAttributeDefs()).collect(Collectors.toMap(e -> e.name, e -> e));
         allSysAttr.putAll(Arrays.stream(platformClientUtil.getLinkTypeService().getSysAttributeDefs()).collect(Collectors.toMap(e -> e.name, e -> e)));
@@ -214,6 +207,8 @@
             qtInfoDTO.setCreateTimeText(DateFormatUtils.format(new Date(obj.createTime), DateUtil.PATTERN_DATETIME));
             dtos.add(qtInfoDTO);
         }
+        // TODO: 2024/12/2 Ludc 杩斿洖鍊兼帓搴�
+        dtos = dtos.stream().sorted(Comparator.comparing(QTInfoDTO::getQtName,String.CASE_INSENSITIVE_ORDER)).collect(Collectors.toList());
         return BaseResult.dataList(dtos);
     }
 
@@ -265,9 +260,15 @@
                 if(column.contains(".")){
                     column = StringUtils.substringAfterLast(column, ".");
                 }
+                if(column.contains(" ")){
+                    column = StringUtils.substringBefore(column, " ");
+                }
                 AttributeDef att = platformClientUtil.getAttributeService().getAttributeDefByName(column);
                 if(att == null || "".equals(att.oid)){
                     att = allSysAttr.get(column.toLowerCase());
+                }
+                if(att == null){
+                    throw new PLException("500", new String[]{"灞炴�у瓧娈碉細" + column + "鍦ㄥ睘鎬ф睜涓湭鏌ヨ鍒帮紝璇风‘璁わ紒锛�"});
                 }
                 leafInfoDTO.setClause(leafInfo.getClause());
 
@@ -321,6 +322,7 @@
                 HashMap<String, String> data = new HashMap<>();
                 data.put("column",child.getText().trim());
                 data.put("type",att.vtDataType);
+                childList.add(data);
             }
         }
         treeMap.put("child",childList);
@@ -433,7 +435,7 @@
         //娣诲姞涓氬姟绫诲瀷鏍硅妭鐐�
         for (LinkType plAction : linkTypes) {
             HashMap<String,Object> childTree = new HashMap();
-            childTree.put("text", plAction.tag + "/" +plAction.name);
+            childTree.put("text", plAction.label + "/" +plAction.name);
             childTree.put("oid", plAction.oid);
 //            tree.put("children", childTree);
             addExportTreeNode(plAction, qts, childTree);
@@ -780,6 +782,7 @@
         }
         return ciMap;
     }
+
     /**
      * 鏍戝寲涓�涓煡璇㈡潯浠剁粍鑺傜偣
      * @param children
@@ -852,6 +855,7 @@
         }
         return ciList;
     }
+
     /**
      * 楂樼骇鏌ヨ
      * 鎶奛ode鍐呭瑙f瀽鎴怌onditionItem
@@ -937,8 +941,6 @@
         return ci;
     }
 
-
-
     /**
      * 鑾峰彇鍙傜収鐨勬煡璇㈡ā鏉�
      * @param refAbName: 鍙傜収灞炴�у悕
@@ -998,35 +1000,6 @@
         return qt;
     }
 
-//    /**
-//     * 缁勮鏌ヨ妯℃澘
-//     * @return
-//     */
-//    public QueryTemplate getQT(HashMap<String,Object> dataMap){
-//        QueryTemplate qt = new QueryTemplate();
-//        qt.setType(QTConstants.TYPE_LINK);
-//        //TODO String qtId =
-//        qt.setLinkType((String) dataMap.get("linkTypeName"));
-//        qt.setDirection( (Boolean)dataMap.get("rdPositive") ? QTConstants.DIRECTION_POSITIVE : QTConstants.DIRECTION_OPPOSITE);
-//        qt.setBtmType((String) dataMap.get("btmName"));
-//        if("鎵�鏈夌被鍨�".equals(dataMap.get("combRelaType"))){
-//            qt.setBtmType("*");
-//        }
-//        qt.setVersion(getVersion((String) dataMap.get("versionValue")));
-//        qt.setQueryISLeaf((Boolean) dataMap.get("isQueryIsLeaf"));
-//        qt.setLevel(StringUtils.isBlank((CharSequence) dataMap.get("level")) ? 1 : Integer.valueOf(String.valueOf(dataMap.get("level"))));
-//        List<String> clauseList = new ArrayList<String>();
-//        //TODO 鏌ヨ鍒� 鏄剧ず鍒�
-//        clauseList.add("*");
-//        qt.setClauseList(clauseList);
-//        Condition con = new Condition();
-//        qt.setCondition(con);
-//        HashMap<String, ConditionItem> ciMap = getCIMap();
-//        con.setCIMap(ciMap);
-//        con.setRootCIName(con.getRootCINameByCIMap(ciMap));
-//        return qt;
-//    }
-
     /**
      * 杩斿洖鏌ヨ鐨勭増鏈�
      * @return
@@ -1074,11 +1047,12 @@
      * @return
      */
     @Override
-    public void expLinkTemplate(List<String> names, HttpServletResponse response) throws PLException, IOException {
+    public void expLinkTemplate(String names, HttpServletResponse response) throws PLException, IOException {
         String defaultTempFolder = LocalFileUtil.getDefaultTempFolder();
         String vciqtmfFileName = defaultTempFolder + File.separator + "LinkTemplateExp" + new Date().getTime() + ".vciqtf";
         LinkQTExportData exportData = new LinkQTExportData();
-        for (String name : names) {
+        String[] splits = names.split(",");
+        for (String name : splits) {
             QTInfo qt = platformClientUtil.getQTDService().getQT(name);
             exportData.getAllQTs().put(qt.qtName,qt);
             LinkType linkType = platformClientUtil.getLinkTypeService().getLinkType(qt.btmName);
@@ -1106,6 +1080,7 @@
         ControllerUtil.writeFileToResponse(response,vciqtmfFileName);
         FileUtil.del(defaultTempFolder + File.separator);
     }
+
     /**
      * 瀵煎叆閾炬帴绫诲瀷鏌ヨ妯℃澘
      * @param file 涓婁紶鐨勬枃浠�
@@ -1136,7 +1111,7 @@
         //娣诲姞涓氬姟绫诲瀷鏍硅妭鐐�
         for (LinkType plAction : ltsNew) {
             HashMap<String,Object> childTree = new HashMap();
-            childTree.put("text", plAction.tag + "/" +plAction.name);
+            childTree.put("text", plAction.label + "/" +plAction.name);
             childTree.put("oid", plAction.oid);
             addExportTreeNode(plAction, qts, childTree);
             childList.add(childTree);
@@ -1464,8 +1439,13 @@
             throw new PLException("500", new String[]{checkInfo});
         }
         qt.setId("qt1");
-        BusinessObject[] result = platformClientUtil.getQueryService().findBTMObjects(qt.getId(), OQTool.qtTOXMl(qt).asXML());
-        return BaseResult.dataList(Arrays.asList(result));
+        try {
+            BusinessObject[] result = platformClientUtil.getQueryService().findBTMObjects(qt.getId(), OQTool.qtTOXMl(qt).asXML());
+            return BaseResult.dataList(Arrays.asList(result));
+        }catch (Exception e){
+            String errorLog = "鏌ヨ鏃跺嚭鐜伴棶棰橈紝璇锋鏌ラ厤缃殑鏉′欢鏄惁瀛樺湪闂锛屽叿浣撳師鍥狅細"+VciBaseUtil.getExceptionMessage(e);
+            throw new VciBaseException(errorLog);
+        }
     }
 
     /**
@@ -1499,6 +1479,7 @@
         if(!checkInfo.equals("OK")){
             throw new PLException("500", new String[]{checkInfo});
         }
+        qt.setId(qtInfoDTO.getQtName());
         //璁剧疆鎺掑簭淇℃伅
         qt.setOrderInfoList(qtInfoDTO.getQueryTemplate().getOrderInfoList());
         QTInfo qtWrapper = new QTInfo();
@@ -1579,9 +1560,10 @@
      * @return
      */
     @Override
-    public void expBtmQTTemplate(List<String> names, HttpServletResponse response) throws PLException, IOException {
+    public String expBtmQTTemplate(String qtNames) throws PLException, IOException {
         String defaultTempFolder = LocalFileUtil.getDefaultTempFolder();
         String vciqtmfFileName = defaultTempFolder + File.separator + "BtmTemplateExp" + new Date().getTime() + ".vciqtf";
+        String[] names = qtNames.split(",");
         BtmQTExportData exportData = new BtmQTExportData();
         for (String name : names) {
             QTInfo qt = platformClientUtil.getQTDService().getQT(name);
@@ -1611,8 +1593,9 @@
                 throw new PLException("500",new String[]{"瀵煎嚭娴佸叧闂紓甯革紒"});
             }
         }
-        ControllerUtil.writeFileToResponse(response,vciqtmfFileName);
-        FileUtil.del(defaultTempFolder + File.separator);
+        //ControllerUtil.writeFileToResponse(response,vciqtmfFileName);
+        //FileUtil.del(defaultTempFolder + File.separator);
+        return vciqtmfFileName;
     }
 
     /**
@@ -1622,8 +1605,9 @@
     @Override
     public BaseResult getAllQTs() throws PLException {
         QTInfo[] allQTs = platformClientUtil.getQTDService().getAllQTs();
+        List<QTInfo> allQTList = Arrays.stream(allQTs).sorted(Comparator.comparing(o -> o.qtName, String.CASE_INSENSITIVE_ORDER)).collect(Collectors.toList());
         DataGrid<QTInfo> dataGrid = new DataGrid<>();
-        dataGrid.setData(Arrays.asList(allQTs));
+        dataGrid.setData(allQTList);
         dataGrid.setTotal(allQTs.length);
         return BaseResult.dataGrid(dataGrid);
     }
@@ -1665,6 +1649,7 @@
         tree.put("children", childList);
         return BaseResult.success(tree);
     }
+
     /**
      * 鏌ヨ妯℃澘鐨勫垪琛ㄦ坊鍔犱簡瀛楁鐨勭浉鍏冲睘鎬�
      * @param btmName 绫诲瀷
@@ -1686,6 +1671,8 @@
         }else {
             qtdArray = platformClientUtil.getQTDService().getBizTypeQTDs(btmName);
         }
+        //鑾峰彇灞炴�х殑鏁版嵁鍔犺浇绫�
+        AttributeDataFetcher attrDataFetcher = new AttributeDataFetcher();
         for (QTD qtd : qtdArray) {
             QTDDTO qtddto = new QTDDTO();
             qtddto.setName(qtd.name);
@@ -1694,7 +1681,8 @@
             qtddto.setBtmName(qtd.btmName);
             qtddto.setCreator(qtd.creator);
             for (String abName : qtd.abNames) {
-                AttributeDef att = platformClientUtil.getAttributeService().getAttributeDefByName(abName);
+                //AttributeDef att = platformClientUtil.getAttributeService().getAttributeDefByName(abName);
+                AttributeDef att = attrDataFetcher.getAttributeDef(abName);
                 //濡傛灉鍦ㄥ睘鎬ф帴鍙d腑娌℃湁鏌ュ埌鐩稿叧瀛楁搴旇灏卞湪榛樿瀛楁涓�
                 if(att == null || "".equals(att.oid)){
                     att = allSysAttr.get(abName.toLowerCase());
@@ -1702,12 +1690,14 @@
                 if(direction != null) {
                     if (direction.equals(QTConstants.DIRECTION_POSITIVE)) {
                         if(att == null ){
-                            throw new PLException("500",new String[]{"灞炴�у瓧娈�:"+ abName +"鏈煡璇㈠埌锛岃纭锛�"});
+                            continue;
+//                            throw new PLException("500",new String[]{"灞炴�у瓧娈�:"+ abName +"鏈煡璇㈠埌锛岃纭锛�"});
                         }
                         att.name = "T_OID." + abName;
                     } else if (direction.equals(QTConstants.DIRECTION_OPPOSITE)) {
                         if(att == null ){
-                            throw new PLException("500",new String[]{"灞炴�у瓧娈�:"+ abName +"鏈煡璇㈠埌锛岃纭锛�"});
+                            continue;
+//                            throw new PLException("500",new String[]{"灞炴�у瓧娈�:"+ abName +"鏈煡璇㈠埌锛岃纭锛�"});
                         }
                         att.name = "F_OID." + abName;
                     }
@@ -1770,6 +1760,9 @@
                         AttributeDef att = platformClientUtil.getAttributeService().getAttributeDefByName(abName_);
                         if(att == null || "".equals(att.oid)){
                             att = allSysAttr.get(abName_.toLowerCase());
+                            if(att == null || "".equals(att.oid)){
+                                continue;
+                            }
                         }
                         att.name = pName + abName_ ;
                         AttributeDefDTO attrDto = new AttributeDefDTO();
@@ -1789,6 +1782,9 @@
                     //绯荤粺灞炴�D,NAME,DESCRIPTION
                     for (int i = 0; i < SystemAttribute.bosysAttList().size(); i++) {
                         AttributeDef attributeDef = allSysAttr.get(SystemAttribute.bosysAttList().get(i).toLowerCase());
+                        if(Func.isEmpty(attributeDef)){
+                            break;
+                        }
                         AttributeDefDTO attrDto = new AttributeDefDTO();
                         attrDto.setDescription(attributeDef.description);
                         attrDto.setLabel(attributeDef.label);
@@ -1863,6 +1859,7 @@
             e.printStackTrace();
         }
     }
+
     // 鏁版嵁杩囨护
     private void addImportBtmData(BtmQTExportData qtExportData, List<BizType> ltsNew, List<QTInfo> qTWrapperNew,
                                Map<String/* 绫诲瀷鍚嶇О */, QTD[]/* 鏌ヨ妯℃澘瀹氫箟 */> norepQTDs) {

--
Gitblit v1.9.3