From 3b3ac1fc72e2849eb500840fd9d61e9b8f1960e1 Mon Sep 17 00:00:00 2001 From: yuxc <yuxc@vci-tech.com> Date: 星期四, 17 十月 2024 16:31:45 +0800 Subject: [PATCH] 1、查询所有的action线程变量用于优化,只查一次平台。 2、新增文件柜管理的controller,servicel以及文件管理的分页查询卷、增加卷、修改卷等接口 --- Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/OsPvolumeDTO.java | 24 +++ Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/RoleRightParamDTOS.java | 23 +++ Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsPvolumesController.java | 86 ++++++++++++ Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIEngineServiceImpl.java | 17 ++ Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsPvolumesServiceI.java | 37 +++++ Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/other/AllActionThreadLocal.java | 24 +++ Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsPvolumesServiceImpl.java | 154 ++++++++++++++++++++++ Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/HMSysModConfigController.java | 13 + 8 files changed, 372 insertions(+), 6 deletions(-) diff --git a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/OsPvolumeDTO.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/OsPvolumeDTO.java new file mode 100644 index 0000000..4995d63 --- /dev/null +++ b/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; //鍗穒d + private String name; //鍗峰悕绉� + private String host;//鍗锋湇鍔p + private String service; // 鏈嶅姟鍚� + private short type; //鍗锋湇鍔$被鍨� 0:Unix,1:Win NT + private String path; //鍗锋湇鍔¤矾寰� + private boolean isvalid; //鏄惁涓洪閫夎矾寰勶紝濡傛灉淇敼浜嗚繖涓�间細鎻愰啋锛氭偍纭疄瑕佷慨鏀瑰嵎鐨勯閫夎矾寰勫悧锛� +} diff --git a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/RoleRightParamDTOS.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/RoleRightParamDTOS.java new file mode 100644 index 0000000..5fe37e5 --- /dev/null +++ b/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 ; +} diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/HMSysModConfigController.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/HMSysModConfigController.java index 0651684..6ea336a 100644 --- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/HMSysModConfigController.java +++ b/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(); diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsPvolumesController.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsPvolumesController.java new file mode 100644 index 0000000..853e3a3 --- /dev/null +++ b/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; + } + } +} diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/other/AllActionThreadLocal.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/other/AllActionThreadLocal.java new file mode 100644 index 0000000..bd07d53 --- /dev/null +++ b/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(); + } +} diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsPvolumesServiceI.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsPvolumesServiceI.java new file mode 100644 index 0000000..1967c05 --- /dev/null +++ b/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; +} diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsPvolumesServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsPvolumesServiceImpl.java new file mode 100644 index 0000000..c32a05a --- /dev/null +++ b/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("淇敼鎴愬姛锛�"); + } + + /** + * 鍗� 浠嶤orba绔浆鍒癏ibernate瀵硅薄绔� + * @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; + } + +} diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIEngineServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIEngineServiceImpl.java index f2b6086..a91ac07 100644 --- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIEngineServiceImpl.java +++ b/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)); }); } -- Gitblit v1.9.3