ludc
2024-10-24 65866894f615d7a1386cd7f030307322996450de
文件柜导出接口上传,ui定义导出界面传参调整。
已修改11个文件
263 ■■■■ 文件已修改
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/PRMDTO.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsPvolumesController.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/UIManagerController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/LogBasicServiceI.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsPvolumesServiceI.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIManagerServiceI.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/LogBasicServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsPortalVIServiceImpl.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsPvolumesServiceImpl.java 104 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/api/UI/uiDefine.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/PRMDTO.java
@@ -2,7 +2,7 @@
import java.util.List;
public class PRMDTO implements   java.io.Serializable {
public class PRMDTO implements java.io.Serializable {
    private static final long serialVersionUID = -9069714336905186990L;
    /**
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsPvolumesController.java
@@ -3,11 +3,15 @@
import com.vci.corba.common.PLException;
import com.vci.corba.framework.data.PvolumeInfo;
import com.vci.dto.*;
import com.vci.starter.web.annotation.log.VciBusinessLog;
import com.vci.starter.web.exception.VciBaseException;
import com.vci.starter.web.pagemodel.BaseResult;
import com.vci.starter.web.util.ControllerUtil;
import com.vci.starter.web.util.VciBaseUtil;
import com.vci.web.service.OsActionServiceI;
import com.vci.web.service.OsPvolumesServiceI;
import com.vci.web.util.Func;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@@ -15,6 +19,7 @@
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
/**
@@ -55,7 +60,7 @@
     * @param dto 卷的传输信息
     * @return 保存结果
     */
    @GetMapping("/savePvolume")
    @PostMapping("/savePvolume")
    public BaseResult savePvolume(@RequestBody OsPvolumeDTO dto){
        try {
            return osPvolumesServiceI.savePvolume(dto);
@@ -72,7 +77,7 @@
     * @param dto 卷的传输信息
     * @return 修改结果
     */
    @GetMapping("/updatePvolume")
    @PostMapping("/updatePvolume")
    public BaseResult updatePvolume(@RequestBody OsPvolumeDTO dto){
        try {
            return osPvolumesServiceI.updatePvolume(dto);
@@ -100,4 +105,46 @@
            return objectBaseResult;
        }
    }
    /**
     * 为文件柜分配成员
     * @param pvolumId
     * @param userIds
     * @return
     */
    @PostMapping("/savePvolumeUser")
    public BaseResult savePvolumeUser(String pvolumId ,String[] userIds){
        try {
            return osPvolumesServiceI.savePvolumeUser(pvolumId,userIds) ? BaseResult.success("文件柜分配成员成功!"):BaseResult.fail("文件柜分配成员失败!");
        } catch (PLException e) {
            BaseResult objectBaseResult = new BaseResult<>();
            objectBaseResult.setCode(Integer.parseInt(e.code));
            objectBaseResult.setMsg(Arrays.toString(e.messages));
            return objectBaseResult;
        }
    }
    /**
     * 导出选中的文件柜信息
     * @param exportFileName 导出的文件名
     * @param pvolumeIds 需要导出的属性英文名称
     * @param response
     */
    @GetMapping( "/exportPvolumes")
    @VciBusinessLog(operateName = "导出选中的文件柜信息")
    public void exportPvolumes(String exportFileName, String pvolumeIds, HttpServletResponse response){
        try {
            String excelPath = osPvolumesServiceI.exportPvolumes(exportFileName,pvolumeIds);
            ControllerUtil.writeFileToResponse(response,excelPath);
        } catch (Exception e) {
            String msg = "导出文件柜时出现错误,原因:" + VciBaseUtil.getExceptionMessage(e);
            try {
                e.printStackTrace();
                ControllerUtil.writeDataToResponse(response,"error_" + Func.format(new Date(),"yyyy-MM-dd HHmmss.sss") + ".txt", StringUtils.isNotBlank(msg)?msg.getBytes():new byte[0],null);
            } catch (IOException ioException) {
                ioException.printStackTrace();
            }
        }
    }
}
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/UIManagerController.java
@@ -535,7 +535,7 @@
     * @param  tabButtonVO
     * @return 修改结果
     */
    @PutMapping("/updateTabbutton")
    @PutMapping("/updateTabButton")
    public BaseResult updateTabButton(@RequestBody PLTabButtonVO tabButtonVO){
        try {
            return uiManagerService.updateTabButton(tabButtonVO);
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/LogBasicServiceI.java
@@ -44,6 +44,11 @@
     */
    BaseResult getOperatingUsers() throws PLException;
    /**
     * 导出日志
     * @param dto 导出的文件名
     * @return
     */
    String exportLogs(LogQueryCriteriaDTO dto) throws PLException;
}
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsPvolumesServiceI.java
@@ -1,13 +1,18 @@
package com.vci.web.service;
import com.vci.corba.common.PLException;
import com.vci.corba.framework.data.PvolumeInfo;
import com.vci.dto.*;
import com.vci.starter.web.pagemodel.BaseResult;
import com.vci.web.util.Func;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
 * 文件柜管理的服务
@@ -40,4 +45,25 @@
     * @return 删除结果
     */
    BaseResult deletePvolume(String[] ids) throws PLException;
    /**
     * 文件柜导出
     * @param exportFileName 导出的文件名
     * @param pvolumeIds 导出选中的卷id
     * @return
     * @throws PLException
     */
    String exportPvolumes(String exportFileName,String pvolumeIds) throws PLException;
    /**
     * 根据卷id查询卷
     * @param ids
     * @return
     */
    List<PvolumeInfo> getPvolumeInfoByIds(List<String> ids) throws PLException;
    /**
     * 为文件柜分配成员
     * @param pvolumId
     * @param userIds
     * @return
     */
    boolean savePvolumeUser(String pvolumId ,String[] userIds) throws PLException;
}
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIManagerServiceI.java
@@ -175,7 +175,7 @@
     * @param tabButtonVO
     * @return
     */
    boolean saveOrUpdateTapButton(PLTabButtonVO tabButtonVO,boolean isAdd);
    boolean saveOrUpdateTabButton(PLTabButtonVO tabButtonVO,boolean isAdd);
    /**
     * 删除单个按钮配置
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/LogBasicServiceImpl.java
@@ -239,7 +239,6 @@
        if(Func.isEmpty(logList)){
            excelDataList.add(new WriteExcelData(1,1, "导出的日志列表为空!"));
        }else{
            //先按照属性类型排序,不同属性类型导出的数据乱的效果
            AtomicInteger i = new AtomicInteger();
            Arrays.stream(logList).forEach(log->{
                excelDataList.add(new WriteExcelData(i.get() +1,0, log.username));
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsPortalVIServiceImpl.java
@@ -573,6 +573,7 @@
        }
        return BaseResult.success("导入成功");
    }
    private String readLines(String filePath){
        StringBuffer sb=new StringBuffer();
        FileInputStream prmFile=null;
@@ -590,6 +591,7 @@
        }
        return sb.toString();
    }
    /**
     * 拷贝数据到word模板中
     * @param fileName 要写入的数据
@@ -620,6 +622,7 @@
        }
        return filePath;
    }
    public List<PortalVIDTO> listByIds(Collection idList){
        List<PortalVIDTO> portalVIVOList=new ArrayList<>();
        if(CollectionUtils.isEmpty(idList)){
@@ -637,13 +640,15 @@
        portalVIVOList=  portalVIO2DTOS(portalVIList);
        return portalVIVOList;
    }
    private BaseResult savePortalVIDTO(PortalVIDTO portalVIDTO,boolean isEdit)  {
    private BaseResult savePortalVIDTO(PortalVIDTO portalVIDTO,boolean isEdit)  {
        boolean _isBtm=false;
        boolean flag = false;
        String labelName=PortalVIType.Form.getName();
        try {
            VciBaseUtil.alertNotNull(portalVIDTO.getViName(),"名称");
            VciBaseUtil.alertNotNull(
                    portalVIDTO.getViName(),"名称"
                    ,portalVIDTO.getPrm().getFormQtName(),"绑定表单");
            if(portalVIDTO.getPrm()==null||portalVIDTO.getPrm().getPrmItemList()==null||portalVIDTO.getPrm().getPrmItemList().size()==0){
                throw  new Throwable(labelName+",未设置");
            }
@@ -706,6 +711,7 @@
        }
        return  BaseResult.success("保存"+labelName+"成功!");
    }
    @Override
    public Map<String, PortalVIVO> selectAllPortalVIMap() throws VciBaseException {
        return null;
@@ -757,7 +763,6 @@
        return "";
    }
    /**
     * 枚举的数据对象转换为显示对象
     *
@@ -773,6 +778,7 @@
        });
        return portalVIVOS;
    }
    /**
     * 表单的数据对象转换为显示对象
     * @param portalVIDTOS 表单的对象
@@ -787,6 +793,7 @@
        });
        return portalVIS;
    }
    /**
     * 表单的数据对象转换为显示对象
     * @param PortalVIS 表单的对象
@@ -811,13 +818,13 @@
     */
    @Override
    public  PortalVI portalVIDTOO2VI(PortalVIDTO portalVIDTO) {
        PortalVI portalVI=new PortalVI();
        portalVI.id=portalVIDTO.getId();
        portalVI.typeFlag= portalVIDTO.getTypeFlag();
        portalVI.typeName=portalVIDTO.getTypeName();
        portalVI.viName=portalVIDTO.getViName();
        portalVI.viType=portalVIDTO.getViType();
        short viType =portalVIDTO.getViType();
        PortalVI portalVI = new PortalVI();
        portalVI.id = portalVIDTO.getId();
        portalVI.typeFlag = portalVIDTO.getTypeFlag();
        portalVI.typeName = portalVIDTO.getTypeName();
        portalVI.viName = portalVIDTO.getViName();
        portalVI.viType = portalVIDTO.getViType();
        short viType = portalVIDTO.getViType();
        PRMDO prmdo = prmDOO2VIS(portalVIDTO.getPrm(),viType);
        try {
            portalVI.prm=UITools.getPRMText(prmdo);
@@ -826,6 +833,7 @@
        }
        return portalVI;
    }
    /**
     * 表单的数据对象转换为显示对象
     * @param portalVI
@@ -844,6 +852,7 @@
        portalVIDTO.setPrm(prmDOO2DTOS(prmdo,viType));
        return portalVIDTO;
    }
    /**
     * 表单数据对象转换
     * @param prmdto
@@ -1210,25 +1219,25 @@
        prmItemDO.setItemOutFields(VciBaseUtil.array2String(prmItemDTO.getItemOutFieldList().toArray(new String[]{})));//需要使用的字段
        prmItemDO.setItemKeyFields(CollectionUtils.isEmpty(prmItemDTO.getItemKeyFieldList())?"":VciBaseUtil.array2String(prmItemDTO.getItemKeyFieldList().toArray(new String[]{})));//需要搜索的字段
       List<String> newItemFieldWidthList=prmItemDTO.getItemFieldWidthList().stream().map(KeyValue::getValue).distinct().collect(Collectors.toList());
       List<String> newItemFieldWidthList = prmItemDTO.getItemFieldWidthList().stream().map(KeyValue::getValue).distinct().collect(Collectors.toList());
       prmItemDO.setItemFieldWidth(VciBaseUtil.array2String(newItemFieldWidthList.toArray(new String[]{}),":"));//字段宽度
       List<ItemSeniorQueryBO> itemSeniorQueryBOS=  prmItemDTO.getItemSeniorQueryBOS();
       List<String> itemSeniorQueryColsList=new ArrayList<>();
       List<ItemSeniorQueryBO> itemSeniorQueryBOS = prmItemDTO.getItemSeniorQueryBOS();
       List<String> itemSeniorQueryColsList = new ArrayList<>();
       List<String> itemSeniorQueryColsCountsList=new ArrayList<>();
       List<String> itemQuerySqlList=new ArrayList<>();
       List<String> itemQuerySqlList = new ArrayList<>();
       itemSeniorQueryBOS.stream().forEach(itemSeniorQueryBO -> {
           String itemSeniorQueryCols= itemSeniorQueryBO.getItemSeniorQueryCols();
           String itemSeniorQueryColsCounts=itemSeniorQueryBO.getItemSeniorQueryColsCounts();
           String itemQuerySql=itemSeniorQueryBO.getItemQuerySql();
           String itemSeniorQueryCols = itemSeniorQueryBO.getItemSeniorQueryCols();
           String itemSeniorQueryColsCounts = itemSeniorQueryBO.getItemSeniorQueryColsCounts();
           String itemQuerySql = itemSeniorQueryBO.getItemQuerySql();
           if(StringUtils.isNotBlank(itemSeniorQueryCols)) {
               itemSeniorQueryColsList.add(itemSeniorQueryCols);
           }
            if(StringUtils.isNotBlank(itemSeniorQueryColsCounts)) {
                itemSeniorQueryColsCountsList.add(itemSeniorQueryColsCounts);
            }
            if(StringUtils.isNotBlank(itemQuerySql)){
                itemQuerySqlList.add(itemQuerySql);
            }
           if(StringUtils.isNotBlank(itemSeniorQueryColsCounts)) {
               itemSeniorQueryColsCountsList.add(itemSeniorQueryColsCounts);
           }
           if(StringUtils.isNotBlank(itemQuerySql)){
               itemQuerySqlList.add(itemQuerySql);
           }
        });
        prmItemDO.setItemSeniorQueryCols(VciBaseUtil.array2String(itemSeniorQueryColsList.toArray(new String[]{})));
        prmItemDO.setItemSeniorQueryColsCounts(VciBaseUtil.array2String(itemSeniorQueryColsCountsList.toArray(new String[]{})));
@@ -1241,8 +1250,8 @@
     */
    private List<KeyValue>  initItemFieldWidthList(String itemOutFields,String itemFieldWidth){
        List<KeyValue> keyValueList=new ArrayList<>();
        List<String>itemOutFieldList=   VciBaseUtil.str2List(itemOutFields);
        List<String>itemFieldWidthList=  VciBaseUtil.str2List(itemFieldWidth,",");
        List<String>itemOutFieldList = VciBaseUtil.str2List(itemOutFields);
        List<String>itemFieldWidthList =VciBaseUtil.str2List(itemFieldWidth,",");
        if(itemOutFieldList.size()>0) {
            for (int i = 0; i < itemOutFieldList.size(); i++) {
                KeyValue keyValue = new KeyValue();
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsPvolumesServiceImpl.java
@@ -1,39 +1,26 @@
package com.vci.web.service.impl;
import cn.hutool.core.io.FileUtil;
import com.vci.constant.FrameWorkLangCodeConstant;
import com.vci.corba.common.PLException;
import com.vci.corba.common.data.UserEntityInfo;
import com.vci.corba.framework.data.PvolumeInfo;
import com.vci.corba.portal.data.Constraint;
import com.vci.corba.portal.data.PLAction;
import com.vci.corba.portal.data.PLActionCls;
import com.vci.corba.portal.data.PLActionParam;
import com.vci.dto.*;
import com.vci.starter.poi.bo.WriteExcelData;
import com.vci.starter.poi.bo.WriteExcelOption;
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.util.ControllerUtil;
import com.vci.starter.web.util.LangBaseUtil;
import com.vci.starter.web.util.LocalFileUtil;
import com.vci.web.enumpck.ActionEnum;
import com.vci.web.enumpck.PlTypetypeEnum;
import com.vci.web.other.ExportActionLogBean;
import com.vci.web.other.ExportBeans;
import com.vci.web.service.OsActionServiceI;
import com.vci.starter.web.util.VciBaseUtil;
import com.vci.starter.web.util.WebThreadLocalUtil;
import com.vci.web.service.OsPvolumesServiceI;
import com.vci.web.util.Func;
import com.vci.web.util.PinyinCommon;
import com.vci.web.util.PlatformClientUtil;
import com.vci.web.util.WebUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.util.*;
import java.util.stream.Collectors;
@@ -133,6 +120,7 @@
        }
        return BaseResult.success("修改成功!");
    }
    /**
     * 删除卷
     * @param ids 主键集合
@@ -160,6 +148,92 @@
    }
    /**
     * 文件柜导出
     * @param exportFileName 导出的文件名
     * @param pvolumeIds 导出选中的卷id
     * @return
     * @throws PLException
     */
    @Override
    public String exportPvolumes(String exportFileName, String pvolumeIds) throws PLException {
        if(Func.isBlank(pvolumeIds)){
            throw new PLException("500",new String[]{"请勾选要导出的数据!"});
        }
        //界面没传名称,使用默认导出名称
        exportFileName = Func.isBlank(exportFileName) ?  "文件柜导出_" + Func.format(new Date(),"yyyy-MM-dd HHmmss.sss"):exportFileName;
        //设置列名
        List<String> columns = new ArrayList<>(Arrays.asList("卷名","机器类型","路径名称","首选路径","服务器","卷服务"));
        //写excel
        String excelPath = LocalFileUtil.getDefaultTempFolder() + File.separator + exportFileName +  ".xls";
        try {
            new File(excelPath).createNewFile();
        } catch (Throwable e) {
            throw new VciBaseException(LangBaseUtil.getErrorMsg(e), new String[]{excelPath}, e);
        }
        //设置列
        List<WriteExcelData> excelDataList = new ArrayList<>();
        //设置列头
        for (int index = 0; index < columns.size(); index++) {
            excelDataList.add(new WriteExcelData(0,index, columns.get(index)));
        }
        //按照文件柜ID查询文件柜
        List<String> pvolumeIdList = Func.toStrList(pvolumeIds);
        List<PvolumeInfo> pvolumeInfoList = this.getPvolumeInfoByIds(pvolumeIdList);
        if(Func.isEmpty(pvolumeInfoList)){
            excelDataList.add(new WriteExcelData(1,1, "未获取到要导出的文件柜信息,请刷新后尝试重新导出!"));
        }else{
            for (int i = 0; i < pvolumeInfoList.size(); i++) {
                PvolumeInfo pvolumeInfo = pvolumeInfoList.get(i);
                excelDataList.add(new WriteExcelData(i+1,0, pvolumeInfo.name));
                excelDataList.add(new WriteExcelData(i+1,1, pvolumeInfo.type));
                excelDataList.add(new WriteExcelData(i+1,2, pvolumeInfo.path));
                excelDataList.add(new WriteExcelData(i+1,3, pvolumeInfo.isvalid));
                excelDataList.add(new WriteExcelData(i+1,4, pvolumeInfo.host));
                excelDataList.add(new WriteExcelData(i+1,5, pvolumeInfo.service));
            }
        }
        WriteExcelOption excelOption = new WriteExcelOption(excelDataList);
        ExcelUtil.writeDataToFile(excelPath, excelOption);
        return excelPath;
    }
    /**
     * 根据卷id查询卷
     * @param ids
     * @return
     */
    @Override
    public List<PvolumeInfo> getPvolumeInfoByIds(List<String> ids) throws PLException {
        List<PvolumeInfo> pvolumeInfos = new ArrayList<>();
        if(Func.isEmpty(ids)){
            return pvolumeInfos;
        }
        PvolumeInfo[] allPvolumes = platformClientUtil.getFrameworkService().getAllPvolumes();
        if (Func.isEmpty(allPvolumes)){
            return pvolumeInfos;
        }
        pvolumeInfos = Arrays.stream(allPvolumes).filter(pvolumeInfo -> ids.contains(pvolumeInfo.id)).collect(Collectors.toList());
        return pvolumeInfos;
    }
    /**
     * 为文件柜分配成员----这个功能现在没用上,平台的保存方法是注释掉的
     * @param pvolumId
     * @param userIds
     * @return
     */
    @Override
    public boolean savePvolumeUser(String pvolumId, String[] userIds) throws PLException {
        VciBaseUtil.alertNotNull(pvolumId,"文件柜主键",userIds,"用户主键集合");
        UserEntityInfo userEntityInfo = new UserEntityInfo();
        userEntityInfo.setUserName(WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId());
        boolean resBoolean = platformClientUtil.getFrameworkService().savePvolumeUser(pvolumId, userIds, userEntityInfo);
        return resBoolean;
    }
    /**
     * 卷 从Corba端转到Hibernate对象端
     * @param pvoInfo
     * @return
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java
@@ -1368,7 +1368,7 @@
     */
    @Override
    public BaseResult addTabButton(PLTabButtonVO tabButtonVO) {
        boolean res = this.saveOrUpdateTapButton(tabButtonVO, true);
        boolean res = this.saveOrUpdateTabButton(tabButtonVO, true);
        return res ? BaseResult.success("按钮配置添加成功!"):BaseResult.success("按钮配置添加失败!");
    }
@@ -1379,7 +1379,7 @@
     */
    @Override
    public BaseResult updateTabButton(PLTabButtonVO tabButtonVO) {
        boolean res = this.saveOrUpdateTapButton(tabButtonVO, false);
        boolean res = this.saveOrUpdateTabButton(tabButtonVO, false);
        return res ? BaseResult.success("按钮配置修改成功!"):BaseResult.success("按钮配置修改失败!");
    }
@@ -1389,11 +1389,10 @@
     * @return
     */
    @Override
    public boolean saveOrUpdateTapButton(PLTabButtonVO tabButtonVO,boolean isAdd){
        VciBaseUtil.alertNotNull(tabButtonVO,"按钮配置对象",tabButtonVO.getLabel(),"参数名称");
    public boolean saveOrUpdateTabButton(PLTabButtonVO tabButtonVO,boolean isAdd){
        VciBaseUtil.alertNotNull(tabButtonVO,"按钮配置对象",tabButtonVO.getLabel(),"参数名称",tabButtonVO.getTableOId(),"页面定义主键");
        //检查当前添加的列表是否重复,但是这儿只支持单条数据保存,所有当前列表判重可以前端来做
        //String btnParamValidate = this.geCheckRes();
        if (tabButtonVO.getSeq() < 1 || tabButtonVO.getSeq() > 63) {
            throw new VciBaseException("按序号超出范围,请修改,按钮【编号】只能在【1-63】范围内。");
        }
Source/plt-web/plt-web-ui/src/api/UI/uiDefine.js
@@ -72,7 +72,7 @@
    method: 'post',
    responseType: 'blob',
    data: {
      params
      ...params
    }
  })
}