1、查询所有的action线程变量用于优化,只查一次平台。
2、新增文件柜管理的controller,servicel以及文件管理的分页查询卷、增加卷、修改卷等接口
已修改2个文件
已添加6个文件
378 ■■■■■ 文件已修改
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/OsPvolumeDTO.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/RoleRightParamDTOS.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/HMSysModConfigController.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsPvolumesController.java 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/other/AllActionThreadLocal.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsPvolumesServiceI.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsPvolumesServiceImpl.java 154 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIEngineServiceImpl.java 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/OsPvolumeDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
package com.vci.dto;
import lombok.Data;
/**
 * æ–‡ä»¶æŸœç®¡ç†ä¼ è¾“对象
 * @author yuxc
 * @date 2024/10/14
 */
@Data
public class OsPvolumeDTO implements java.io.Serializable {
    /**
     * ç¦æ­¢ä¿®æ”¹è¿™ä¸ªå€¼
     */
    private static final long serialVersionUID = 2492852474710986720L;
    private String id; //卷id
    private String name; //卷名称
    private String host;//卷服务ip
    private String service; // æœåŠ¡å
    private short type; //卷服务类型 0:Unix,1:Win NT
    private String path; //卷服务路径
    private boolean isvalid; //是否为首选路径,如果修改了这个值会提醒:您确实要修改卷的首选路径吗?
}
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/RoleRightParamDTOS.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
package com.vci.dto;
import lombok.Data;
import java.io.Serializable;
import java.util.ArrayList;
/**
 * ä¿å­˜æƒé™ä¼ è¾“对象
 * @author yuxc
 * @date 2024-09-06
 */
@Data
public class RoleRightParamDTOS implements Serializable {
    /**
     * ç¦æ­¢ä¿®æ”¹è¿™ä¸ªå€¼
     */
    private static final long serialVersionUID = 2492852474710986720L;
    private ArrayList<RoleRightParamDTO> roleData;
    private String roleId ;
}
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/HMSysModConfigController.java
@@ -7,6 +7,7 @@
import com.vci.dto.RoleInfoDTO;
import com.vci.dto.RoleRightDTO;
import com.vci.dto.RoleRightParamDTO;
import com.vci.dto.RoleRightParamDTOS;
import com.vci.frameworkcore.compatibility.ISmFunctionQueryService;
import com.vci.frameworkcore.compatibility.SmHMSysModConfigServiceI;
import com.vci.pagemodel.AppConfigDetailInfoVO;
@@ -28,9 +29,7 @@
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
import java.util.*;
/**
 * é¦–页系统模块配置控制器
@@ -135,8 +134,14 @@
     * @throws PLException
     */
    @PostMapping("/saveRoleRight")
    public BaseResult<List<String>> saveRoleRight(@RequestBody List<RoleRightParamDTO> roleRightDTOS, String roleId) {
    public BaseResult saveRoleRight(@RequestBody RoleRightParamDTOS roleDto) {
        try {
            ArrayList<RoleRightParamDTO> roleRightDTOS = roleDto.getRoleData();
            String roleId = roleDto.getRoleId();
            if(StringUtils.isBlank(roleId)){
                return BaseResult.fail("请选择角色!");
            }
            return functionQueryService.saveRoleRight(roleRightDTOS, roleId);
        }catch (Exception e){
            e.printStackTrace();
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsPvolumesController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,86 @@
package com.vci.web.controller;
import com.vci.corba.common.PLException;
import com.vci.corba.framework.data.PvolumeInfo;
import com.vci.dto.*;
import com.vci.starter.web.exception.VciBaseException;
import com.vci.starter.web.pagemodel.BaseResult;
import com.vci.starter.web.util.VciBaseUtil;
import com.vci.web.service.OsActionServiceI;
import com.vci.web.service.OsPvolumesServiceI;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
/**
 * æ–‡ä»¶æŸœç®¡ç†çš„æŽ§åˆ¶å™¨
 * @author yuxc
 * @date 2024-10-14
 */
@RequestMapping("/pvolumesController")
@RestController
public class OsPvolumesController {
    /**
     * Action服务
     */
    @Autowired
    private OsPvolumesServiceI osPvolumesServiceI;
    /**
     * åˆ†é¡µæŸ¥è¯¢å·
     * @param pageSize é¡µæ•°
     * @param pageIndex ç¬¬å‡ é¡µ
     * @return åˆ†é¡µæ•°æ®
     */
    @GetMapping("/getPvolumesPage")
    public BaseResult getPvolumesPage(short pageSize, short pageIndex){
        try {
            return osPvolumesServiceI.getPvolumesPage(pageSize, pageIndex);
        } catch (PLException e) {
            BaseResult objectBaseResult = new BaseResult<>();
            objectBaseResult.setCode(Integer.parseInt(e.code));
            objectBaseResult.setMsg(Arrays.toString(e.messages));
            return objectBaseResult;
        }
    }
    /**
     * å¢žåŠ å·
     * @param dto å·çš„传输信息
     * @return ä¿å­˜ç»“æžœ
     */
    @GetMapping("/savePvolume")
    public BaseResult savePvolume(@RequestBody OsPvolumeDTO dto){
        try {
            return osPvolumesServiceI.savePvolume(dto);
        } catch (PLException e) {
            BaseResult objectBaseResult = new BaseResult<>();
            objectBaseResult.setCode(Integer.parseInt(e.code));
            objectBaseResult.setMsg(Arrays.toString(e.messages));
            return objectBaseResult;
        }
    }
    /**
     * ä¿®æ”¹å·
     * @param dto å·çš„传输信息
     * @return ä¿®æ”¹ç»“æžœ
     */
    @GetMapping("/updatePvolume")
    public BaseResult updatePvolume(@RequestBody OsPvolumeDTO dto){
        try {
            return osPvolumesServiceI.updatePvolume(dto);
        } catch (PLException e) {
            BaseResult objectBaseResult = new BaseResult<>();
            objectBaseResult.setCode(Integer.parseInt(e.code));
            objectBaseResult.setMsg(Arrays.toString(e.messages));
            return objectBaseResult;
        }
    }
}
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/other/AllActionThreadLocal.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
package com.vci.web.other;
import com.vci.pagemodel.UIActionVO;
import java.util.Map;
public class AllActionThreadLocal {
    //把构造函数私有,外面不能new,只能通过下面两个方法操作
    private AllActionThreadLocal(){
    }
    private static final ThreadLocal<Map<String, UIActionVO>> LOCAL = new ThreadLocal<>();
    public static void set(Map<String, UIActionVO> data){
        LOCAL.set(data);
    }
    public static Map<String, UIActionVO> get(){
        return LOCAL.get();
    }
    public static void remove(){
        LOCAL.remove();
    }
}
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsPvolumesServiceI.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,37 @@
package com.vci.web.service;
import com.vci.corba.common.PLException;
import com.vci.dto.*;
import com.vci.starter.web.pagemodel.BaseResult;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
/**
 * æ–‡ä»¶æŸœç®¡ç†çš„æœåŠ¡
 * @author yuxc
 * @date 2024-10-14
 */
public interface OsPvolumesServiceI {
    /**
     * åˆ†é¡µæŸ¥è¯¢å·
     * @param pageSize é¡µæ•°
     * @param pageIndex ç¬¬å‡ é¡µ
     * @return åˆ†é¡µæ•°æ®
     */
    BaseResult getPvolumesPage(short pageSize, short pageIndex) throws PLException;
    /**
     * å¢žåŠ å·
     * @param dto å·çš„传输信息
     * @return ä¿å­˜ç»“æžœ
     */
    BaseResult savePvolume(OsPvolumeDTO dto) throws PLException;
    /**
     * ä¿®æ”¹å·
     * @param dto å·çš„传输信息
     * @return ä¿®æ”¹ç»“æžœ
     */
    BaseResult updatePvolume(OsPvolumeDTO dto) throws PLException;
}
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsPvolumesServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,154 @@
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.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;
/**
 * æ–‡ä»¶æŸœç®¡ç†çš„æœåŠ¡å®žçŽ°ç±»
 * @author yuxc
 * @date 2024-10-14
 */
@Service
public class OsPvolumesServiceImpl implements OsPvolumesServiceI {
    @Autowired
    private PlatformClientUtil platformClientUtil;
    /**
     * åˆ†é¡µæŸ¥è¯¢å·
     * @param pageSize é¡µæ•°
     * @param pageIndex ç¬¬å‡ é¡µ
     * @return åˆ†é¡µæ•°æ®
     */
    @Override
    public BaseResult getPvolumesPage(short pageSize, short pageIndex) throws PLException {
        PvolumeInfo[] pvolumesPage = platformClientUtil.getFrameworkService().getPvolumesPage(pageSize, pageIndex);
        List<OsPvolumeDTO> pvs = new ArrayList<>();
        for (PvolumeInfo pvolumeInfo : pvolumesPage) {
            OsPvolumeDTO osPvolumeDTO = new OsPvolumeDTO();
            osPvolumeDTO = tranferCorbaObjToPvolume(pvolumeInfo);
            pvs.add(osPvolumeDTO);
        }
        return BaseResult.dataList(pvs);
    }
    @Override
    public BaseResult savePvolume(OsPvolumeDTO dto) throws PLException {
        PvolumeInfo pvoInfo = new PvolumeInfo();
        pvoInfo.service = dto.getService();
        pvoInfo.id = dto.getId();
        pvoInfo.name = dto.getName();
        pvoInfo.host = dto.getHost();
        pvoInfo.isvalid = dto.isIsvalid();
        pvoInfo.path = dto.getPath();
        //卷服务类型,机器类型
        pvoInfo.type = dto.getType();
        UserEntityInfo userInfo = new UserEntityInfo();
        userInfo.setUserName(WebUtil.getCurrentUserId());
        userInfo.setModules("com.vci.client.framework.systemConfig.volumn.PvolumePanel");
        if(pvoInfo.isvalid){
            PvolumeInfo[] allPvolumes = platformClientUtil.getFrameworkService().getAllPvolumes();
            if(allPvolumes.length > 0){
//                å°†å…¶ä»–卷设置为非首选卷 0
                platformClientUtil.getFrameworkService().updatePvolumeInvalid(userInfo);
            }
        }
        String id= platformClientUtil.getFrameworkService().savePvolume(pvoInfo, userInfo);
        if(StringUtils.isBlank(id)){
            return BaseResult.fail("保存失败!");
        }
        return BaseResult.success("保存成功!");
    }
    @Override
    public BaseResult updatePvolume(OsPvolumeDTO dto) throws PLException {
        PvolumeInfo pvoInfo = new PvolumeInfo();
        pvoInfo.service = StringUtils.isBlank(dto.getService()) ? "" : dto.getService();
        pvoInfo.id = StringUtils.isBlank(dto.getId()) ? "" : dto.getId();
        pvoInfo.name = StringUtils.isBlank(dto.getName()) ? "" : dto.getName();
        pvoInfo.host = StringUtils.isBlank(dto.getHost()) ? "" : dto.getHost();
        pvoInfo.isvalid = dto.isIsvalid();
        pvoInfo.path = StringUtils.isBlank(dto.getPath()) ? "" : dto.getPath();
        //卷服务类型,机器类型
        pvoInfo.type = dto.getType();
        if(StringUtils.isBlank(pvoInfo.service) || StringUtils.isBlank(pvoInfo.name) || StringUtils.isBlank(pvoInfo.path)){
            throw new PLException("500", new String[]{"字段服务名、卷名称、卷服务路径不能为空!"});
        }
        PvolumeInfo[] allPvo = platformClientUtil.getFrameworkService().getAllPvolumes();
        Map<String, PvolumeInfo> pvInfoMap = Arrays.stream(allPvo).collect(Collectors.toMap(e -> e.id, e -> e));
        //如果是要进行修改,名称不变的情况下可以成功修改,这种情况下不是名称重复。
        if(pvInfoMap.get(pvoInfo.id) == null){
            throw new PLException("500", new String[]{"未查询到相关数据请重新操作!"});
        }
        if ( allPvo.length == 1 && !pvoInfo.isvalid){
            throw new PLException("500", new String[]{"仅一条数据需设置为首选路径"});
        }
        UserEntityInfo userInfo = new UserEntityInfo();
        userInfo.setUserName(WebUtil.getCurrentUserId());
        userInfo.setModules("com.vci.client.framework.systemConfig.volumn.PvolumePanel");
        if(pvoInfo.isvalid && allPvo.length > 0){
//                å°†å…¶ä»–卷设置为非首选卷 0
            platformClientUtil.getFrameworkService().updatePvolumeInvalid(userInfo);
        }
        boolean b = platformClientUtil.getFrameworkService().updatePvolume(pvoInfo, userInfo);
        if(!b){
            return BaseResult.fail("修改失败!");
        }
        return BaseResult.success("修改成功!");
    }
    /**
     * å· ä»ŽCorba端转到Hibernate对象端
     * @param pvoInfo
     * @return
     */
    private OsPvolumeDTO tranferCorbaObjToPvolume(PvolumeInfo pvoInfo) {
        OsPvolumeDTO obj = new OsPvolumeDTO();
        obj.setId(pvoInfo.id);
        obj.setName(pvoInfo.name);
        obj.setHost(pvoInfo.host);
        obj.setService(pvoInfo.service);
        obj.setType(pvoInfo.type);
        obj.setPath(pvoInfo.path);
        obj.setIsvalid(pvoInfo.isvalid);
        return obj;
    }
}
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIEngineServiceImpl.java
@@ -16,6 +16,7 @@
import com.vci.web.enumpck.UIComponentTypeEnum;
import com.vci.web.enumpck.UIFieldTypeEnum;
import com.vci.web.enumpck.UILayoutAreaTypeEnum;
import com.vci.web.other.AllActionThreadLocal;
import com.vci.web.service.OsAttributeServiceI;
import com.vci.web.service.OsBtmServiceI;
import com.vci.web.service.UIEngineServiceI;
@@ -1080,6 +1081,11 @@
        Map<String, OsAttributeVO> attributeVOMap;
        if(pages != null && pages.size() > 0){
            attributeVOMap = attrService.selectAllAttributeMap();
            Map<String, UIActionVO> actionVOMap = AllActionThreadLocal.get();
            if(actionVOMap == null || actionVOMap.isEmpty()){
                actionVOMap = selectAllActionMap();
                AllActionThreadLocal.set(actionVOMap);
            }
        }else{
            attributeVOMap = null;
        }
@@ -1097,6 +1103,7 @@
                }
            });
        }
        AllActionThreadLocal.remove();
        return contentVOS;
    }
@@ -1456,9 +1463,15 @@
    public List<UIButtonDefineVO> buttonDO2VOs(Collection<com.vci.corba.portal.data.PLTabButton> buttons){
        List<UIButtonDefineVO> buttonDefineVOS = new ArrayList<>();
        if(buttons != null && buttons.size() > 0){
            Map<String, UIActionVO> actionVOMap = self.selectAllActionMap();
//            Map<String, UIActionVO> actionVOMap = self.selectAllActionMap();
            Map<String, UIActionVO> actionVOMap = null;
            actionVOMap = AllActionThreadLocal.get();
            if(actionVOMap == null ){
                actionVOMap = self.selectAllActionMap();
            }
            Map<String, UIActionVO> finalActionVOMap = actionVOMap;
            Optional.ofNullable(buttons).orElseGet(()->new ArrayList<>()).stream().forEach(button->{
                buttonDefineVOS.add(buttonDO2VO(button, actionVOMap));
                buttonDefineVOS.add(buttonDO2VO(button, finalActionVOMap));
            });
        }