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 } }) }