ludc
2025-01-16 68fd566d21b3efc3a670a5295289b1801f5a4155
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);
    }
@@ -271,6 +266,9 @@
                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());
@@ -437,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);
@@ -784,6 +782,7 @@
        }
        return ciMap;
    }
    /**
     * 树化一个查询条件组节点
     * @param children
@@ -856,6 +855,7 @@
        }
        return ciList;
    }
    /**
     * 高级查询
     * 把Node内容解析成ConditionItem
@@ -941,8 +941,6 @@
        return ci;
    }
    /**
     * 获取参照的查询模板
     * @param refAbName: 参照属性名
@@ -1001,7 +999,6 @@
        condition.setCIMap(ciMap);
        return qt;
    }
    /**
     * 返回查询的版本
@@ -1083,6 +1080,7 @@
        ControllerUtil.writeFileToResponse(response,vciqtmfFileName);
        FileUtil.del(defaultTempFolder + File.separator);
    }
    /**
     * 导入链接类型查询模板
     * @param file 上传的文件
@@ -1113,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);
@@ -1441,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);
        }
    }
    /**
@@ -1476,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();
@@ -1556,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);
@@ -1588,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;
    }
    /**
@@ -1599,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);
    }
@@ -1642,6 +1649,7 @@
        tree.put("children", childList);
        return BaseResult.success(tree);
    }
    /**
     * 查询模板的列表添加了字段的相关属性
     * @param btmName 类型
@@ -1663,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);
@@ -1671,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);
                //如果在属性接口中没有查到相关字段应该就在默认字段中
                if(att == null || "".equals(att.oid)){
                    att = allSysAttr.get(abName.toLowerCase());
@@ -1749,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();
@@ -1768,6 +1782,9 @@
                    //系统属性ID,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);
@@ -1842,6 +1859,7 @@
            e.printStackTrace();
        }
    }
    // 数据过滤
    private void addImportBtmData(BtmQTExportData qtExportData, List<BizType> ltsNew, List<QTInfo> qTWrapperNew,
                               Map<String/* 类型名称 */, QTD[]/* 查询模板定义 */> norepQTDs) {