From 391eec3114a17e68652434c6eae610799d80290e Mon Sep 17 00:00:00 2001 From: ludc <ludc@vci-tech.com> Date: 星期四, 16 一月 2025 11:13:43 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsPortalVIServiceImpl.java | 902 ++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 803 insertions(+), 99 deletions(-) diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsPortalVIServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsPortalVIServiceImpl.java index 4b51876..df39636 100644 --- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsPortalVIServiceImpl.java +++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsPortalVIServiceImpl.java @@ -1,55 +1,90 @@ package com.vci.web.service.impl; +import cn.hutool.core.io.FileUtil; +import cn.hutool.core.util.ZipUtil; import com.vci.bo.ItemSeniorQueryBO; import com.vci.common.utility.ObjectUtility; +import com.vci.constant.FrameWorkLangCodeConstant; import com.vci.corba.common.PLException; +import com.vci.corba.omd.qtm.QTD; +import com.vci.corba.omd.qtm.QTInfo; import com.vci.corba.portal.PortalService.GetPagePortalVIArrayByPageInfoResult; import com.vci.corba.portal.data.PortalVI; -import com.vci.dto.PRMDTO; -import com.vci.dto.PRMItemDTO; -import com.vci.dto.PortalVIDTO; -import com.vci.model.*; +import com.vci.dto.*; +import com.vci.enumpck.UI.ItemTypeEnum; +import com.vci.model.PRMDO; +import com.vci.model.PRMItemDO; import com.vci.pagemodel.*; +import com.vci.po.PortalVIPO; +import com.vci.po.QTDPO; +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.util.ExcelUtil; import com.vci.starter.web.exception.VciBaseException; import com.vci.starter.web.pagemodel.BaseQueryObject; import com.vci.starter.web.pagemodel.BaseResult; import com.vci.starter.web.pagemodel.DataGrid; +import com.vci.starter.web.util.LocalFileUtil; import com.vci.starter.web.util.VciBaseUtil; -import com.vci.web.enumpck.ItemTypeEnum; import com.vci.web.enumpck.PortalVIType; import com.vci.web.enumpck.PortalVITypeFlag; +import com.vci.web.service.OsAttributeServiceI; import com.vci.web.service.OsPortalVIServiceI; +import com.vci.web.service.OsQuereyTemplateServiceI; import com.vci.web.util.PlatformClientUtil; import com.vci.web.util.UITools; +import com.vci.web.util.WebUtil; +import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; import java.util.*; -import java.util.concurrent.atomic.AtomicBoolean; +import java.util.function.Function; import java.util.stream.Collectors; /* - * 閾炬帴绫诲瀷鏈嶅姟 + * 琛ㄥ崟/琛ㄦ牸鏈嶅姟 * @author xiej * @date 2024-08-14 */ @Service public class OsPortalVIServiceImpl implements OsPortalVIServiceI { /** + * 鏃ュ織 + */ + private Logger logger = LoggerFactory.getLogger(getClass()); + /** * 鍔犺浇鑷韩 */ @Autowired(required = false) @Lazy private OsPortalVIServiceI self; - + /** + * 鍔犺浇鑷韩 + */ + @Autowired(required = false) + private OsAttributeServiceI osAttributeService; /** * 骞冲彴鐨勮皟鐢ㄥ伐鍏风被 */ @Autowired private PlatformClientUtil platformClientUtil; + /** + * 鏌ヨ妯℃澘鏈嶅姟 + */ + @Autowired + private OsQuereyTemplateServiceI quereyTemplateServiceI; @Override public void clearCache() { @@ -72,29 +107,32 @@ } String viName=StringUtils.isBlank(conditionMap.get("viName"))?"":conditionMap.get("viName"); String viTypeLabel=StringUtils.isBlank(conditionMap.get("viType"))?"":conditionMap.get("viType"); - PortalVIType portalVIType= PortalVIType.getByLabel(viTypeLabel); + PortalVIType portalVIType= PortalVIType.getByName(viTypeLabel); Short viType=-1; if(portalVIType!=null){ viType=portalVIType.getIntVal(); } String viTypeFlagLabel=StringUtils.isBlank(conditionMap.get("viTypeFlag"))?"":conditionMap.get("viTypeFlag"); - PortalVITypeFlag portalVITypeFlag= PortalVITypeFlag.getByLabel(viTypeFlagLabel); + PortalVITypeFlag portalVITypeFlag= PortalVITypeFlag.getByName(viTypeFlagLabel); Short viTypeFlag=-1; if(portalVITypeFlag!=null){ viTypeFlag=portalVITypeFlag.getIntVal(); } long pageIndex=baseQueryObject.getPage(); long pageSize=baseQueryObject.getLimit(); + if(pageSize==-1){ + pageSize=25; + } DataGrid<PortalVIVO> dataGrid = new DataGrid<>(); try { - GetPagePortalVIArrayByPageInfoResult pagePortalVIArrayByPageInfoResult= platformClientUtil.getPortalService().getPagePortalVIArrayByPageInfo(typeName,viName,viType,viTypeFlag,pageIndex,pageSize); + GetPagePortalVIArrayByPageInfoResult pagePortalVIArrayByPageInfoResult = platformClientUtil.getPortalService().getPagePortalVIArrayByPageInfo(typeName,viName,viType,viTypeFlag,pageIndex,pageSize); if(pagePortalVIArrayByPageInfoResult.total>0) { PortalVI[] portalVIS = pagePortalVIArrayByPageInfoResult.returnValue; - List<PortalVIVO> portalVIVOS= portalVIDOO2VOS(Arrays.asList(portalVIS)); + List<PortalVIVO> portalVIVOS = portalVIDOO2VOS(Arrays.asList(portalVIS)); dataGrid.setData(portalVIVOS); dataGrid.setTotal(pagePortalVIArrayByPageInfoResult.total); }else{ - dataGrid = new DataGrid<>("娌掓湁鏌ヨ鍒版暟鎹�"); + dataGrid = new DataGrid<>(); } } catch (PLException e) { e.printStackTrace(); @@ -110,9 +148,33 @@ * @throws PLException */ @Override - public BaseResult add(PortalVIDTO portalVIDTO) throws VciBaseException { - return savePortalVIDTO(portalVIDTO,false); + public BaseResult addSave(PortalVIDTO portalVIDTO) throws VciBaseException { + return savePortalVIDTO(portalVIDTO,false); } + + /** + * 鏍规嵁琛ㄥ崟id鑾峰彇鍏蜂綋鏁版嵁 + * @param id + * @param viType + * @return + * @throws VciBaseException + */ + @Override + public PortalVIVO getPortalVIById(String id,String viType) throws PLException { + VciBaseUtil.alertNotNull(id,"涓婚敭"); + String lableName=PortalVIType.Form.getLabel(); + if(PortalVIType.Table.getName()==viType){ + lableName=PortalVIType.Table.getLabel(); + } + PortalVIVO portalVIVO = null; + PortalVI portalVI = platformClientUtil.getPortalService().getPortalVIById(id); + if(portalVI==null||StringUtils.isBlank(portalVI.id)){ + throw new VciBaseException("鏍规嵁涓婚敭鏈煡璇㈠埌鏁版嵁"); + } + portalVIVO = portalVIDOO2VO(portalVI); + return portalVIVO; + } + /*** * 琛ㄥ崟/琛ㄦ牸鏇存敼 * @param portalVIDTO @@ -120,45 +182,512 @@ * @throws PLException */ @Override - public BaseResult edit(PortalVIDTO portalVIDTO) throws VciBaseException { + public BaseResult editSave(PortalVIDTO portalVIDTO) throws VciBaseException { return savePortalVIDTO(portalVIDTO,true); } - private BaseResult savePortalVIDTO(PortalVIDTO portalVIDTO,boolean isEdit) { + @Override + public boolean delete(DeletePortalVIDTOList portalVIDTOList) throws PLException { + if(portalVIDTOList==null||CollectionUtils.isEmpty(portalVIDTOList.getPortalVIDTOList())){ + // VciBaseUtil.alertNotNull("鍒犻櫎鐨勫璞�"); + throw new PLException("1001",new String[]{"璇烽�夋嫨瑕佸垹闄ょ殑瀵硅薄锛亇"}); + } + try { + for(PortalVIDTO portalVIDTO:portalVIDTOList.getPortalVIDTOList()) { + boolean formFlag = false; + short viType = portalVIDTO.getViType(); + String typeName = portalVIDTO.getTypeName(); + String viewName = portalVIDTO.getViName(); + String id = portalVIDTO.getId(); + if (viType == PortalVIType.Form.getIntVal()) { + // 鍒ゆ柇璇ヨ〃鍗曟槸鍚﹀湪琛ㄦ牸涓寮曠敤 + formFlag = platformClientUtil.getPortalService().judgeDeleteButton(id, typeName); + if (formFlag) { + throw new Throwable(viewName + "琛ㄥ崟宸茬粡鍦ㄨ〃鏍间腑琚紩鐢紝璇烽噸鏂伴�夋嫨瑕佸垹闄ょ殑瀵硅薄!"); + } + } + // 鍒ゆ柇璇ヨ〃鍗曟垨琛ㄦ牸鏄惁鍦║I瀹氫箟鏃惰寮曠敤 + formFlag = platformClientUtil.getPortalService().judgeUpdateButton(viType, viewName, typeName); + if (formFlag) { + throw new Throwable(viewName + "鏁版嵁宸茬粡琚玌I缁勪欢寮曠敤锛岃閲嶆柊閫夋嫨瑕佸垹闄ょ殑瀵硅薄!"); + } + PortalVI portalVI = new PortalVI(); + portalVI.id = portalVIDTO.getId(); + portalVI.viName = portalVIDTO.getViName(); + portalVI.viType = portalVIDTO.getViType(); + portalVI.typeName = portalVIDTO.getTypeName(); + portalVI.typeFlag = portalVIDTO.getTypeFlag(); + platformClientUtil.getPortalService().deletePortalVI(portalVI); + } + }catch (Throwable e){ + String exceptionMessage = "鍒犻櫎琛ㄥ崟鏃跺嚭鐜伴敊璇紝鍘熷洜锛�" + VciBaseUtil.getExceptionMessage(e); + logger.error(exceptionMessage); + throw new PLException("100",new String[]{exceptionMessage}); + } + return true; + } + + @Override + public boolean delete(String ids) throws PLException { + VciBaseUtil.alertNotNull(ids,"涓婚敭"); + List<String> idsList = VciBaseUtil.str2List(ids); + List<PortalVIDTO> portalVIDTOList = new ArrayList<>(); + DeletePortalVIDTOList deletePortalVIDTOList=new DeletePortalVIDTOList(); + idsList.stream().forEach(id->{ + PortalVI portalVI= null; + try { + portalVI = platformClientUtil.getPortalService().getPortalVIById(id); + PortalVIDTO portalVIDTO = new PortalVIDTO(); + portalVIDTO.setId(portalVI.id); + portalVIDTO.setTypeFlag(portalVI.typeFlag); + portalVIDTO.setTypeName(portalVI.typeName); + portalVIDTO.setViName(portalVI.viName); + portalVIDTO.setViType(portalVI.viType); + portalVIDTOList.add(portalVIDTO); + } catch (PLException e) { + e.printStackTrace(); + } + }); + deletePortalVIDTOList.setPortalVIDTOList(portalVIDTOList); + return delete(deletePortalVIDTOList); + } + + /** + * 琛ㄥ崟/琛ㄦ牸鍏嬮殕 + * @param clonePortalVIDTOList + * @return + * @throws VciBaseException + */ + @Override + public boolean clone(ClonePortalVIDTOList clonePortalVIDTOList) throws VciBaseException { + if(clonePortalVIDTOList == null || CollectionUtils.isEmpty(clonePortalVIDTOList.getClonePortalVIDTOList())){ + throw new VciBaseException("璇烽�夋嫨瑕佸厠闅嗙殑瀵硅薄!"); + } + try { + String typeName=clonePortalVIDTOList.getClonePortalVIDTOList().get(0).getTypeName(); + PortalVI[] portalVIS= platformClientUtil.getPortalService().getPortalVIArrayByTypeName(typeName); + Map<String, PortalVIVO> PortalVIMap=new HashMap<>(); + if(!CollectionUtils.isEmpty(Arrays.asList(portalVIS))) { + List<PortalVIVO> portalVIVOS = portalVIDOO2VOS(Arrays.asList(portalVIS)); + PortalVIMap =portalVIVOS.stream().collect(Collectors.toMap(PortalVIVO::getViName, Function.identity())); + } + List<PortalVI> portalVIList=new ArrayList<>(); + for (ClonePortalVIDTO clonedestObject : clonePortalVIDTOList.getClonePortalVIDTOList()) { + String viName = clonedestObject.getViName(); + PortalVIDTO portalVIDTO = clonedestObject.getOldPortalVIDTO(); + short typeFlag = clonedestObject.getTypeFlag(); + if (viName != null) { + VciBaseUtil.alertNotNull(viName, "鍏嬮殕鍚嶇О涓嶅厑璁镐负绌�"); + //throw new PLException("1001",new String[]{"璇烽�夋嫨瑕佸垹闄ょ殑瀵硅薄锛亇"}); + if( PortalVIMap.containsKey(viName)){ + throw new VciBaseException("鍏嬮殕鍚嶇О"+viName+"宸插瓨鍦紝璇锋牳瀵癸紒"); + } + PortalVI portalVI = UITools.getService().getPortalVIById(portalVIDTO.getId()); + portalVI.id = ObjectUtility.getNewObjectID36(); + portalVI.viName = viName; + //濡傛灉鍏嬮殕閫夋嫨浜嗕笟鍔$被鍨嬪垯鎷疯礉鍒版柊鐨勪笟鍔$被鍨嬩笅 + if (StringUtils.isNotBlank(typeName)) { + portalVI.typeName = typeName; + } + if (typeFlag == PortalVITypeFlag.BtmType.getIntVal() || typeFlag == PortalVITypeFlag.LinkType.getIntVal()) { + portalVI.typeFlag = typeFlag; + } + platformClientUtil.getPortalService().savePortalVI(portalVI); + portalVIList.add(portalVI); + } + } + }catch (PLException e){ + throw new VciBaseException("鍏嬮殕鍑虹幇寮傚父:"+e.getMessage()); + } + return true; + } + + @Override + public String exportToExcel(Collection<String> idList) { + String defaultTempFolder = LocalFileUtil.getDefaultTempFolder(); + String xfileName="export.xls"; + List<WriteExcelData> rowDataList = new ArrayList<>(); + List<WriteExcelData> qtRowDataList = new ArrayList<>(); + //VciBaseUtil.alertNotNull(idList); + List<PortalVIDTO> portalVIDTOList= listByIds(idList); + final int index=0; + + String excelFileName = defaultTempFolder + File.separator + xfileName; + File excelFile = new File(excelFileName); + try { + excelFile.createNewFile(); + }catch (Throwable e){ + String msg = "鍦ㄥ垱寤篹xcel鏂囦欢鐨勬椂鍊欏嚭鐜颁簡閿欒"; + if(logger.isErrorEnabled()){ + logger.error(msg,e); + } + throw new VciBaseException(msg+",{0}",new String[]{excelFileName},e); + } + + + rowDataList.add(new WriteExcelData(index, 0, "涓氬姟绫诲瀷鍚嶇О")); + rowDataList.add(new WriteExcelData(index, 1, "鍚嶇О")); + rowDataList.add(new WriteExcelData(index, 2, "涓氬姟绫诲瀷")); + rowDataList.add(new WriteExcelData(index, 3, "琛ㄥ崟绫诲瀷")); + rowDataList.add(new WriteExcelData(index, 4, "閰嶇疆鏂囨湰")); + rowDataList.add(new WriteExcelData(index, 5, "灞炴��")); + rowDataList.add(new WriteExcelData(index, 6, "鏌ヨ妯℃澘鍚嶇О")); + rowDataList.add(new WriteExcelData(index, 7, "鏌ヨ妯℃澘閰嶇疆鏂囨湰")); + rowDataList.add(new WriteExcelData(index, 8, "鏌ヨ妯℃澘涓氬姟绫诲瀷")); + + + qtRowDataList.add(new WriteExcelData(index, 0, "涓氬姟绫诲瀷鍚嶇О")); + qtRowDataList.add(new WriteExcelData(index, 1, "閾炬帴绫诲瀷鍚嶇О")); + qtRowDataList.add(new WriteExcelData(index, 2, "鏌ヨ妯℃澘瀹氫箟鍚嶇О")); + qtRowDataList.add(new WriteExcelData(index, 3, "灞炴��")); + + if(!CollectionUtils.isEmpty(portalVIDTOList)){ + final int[] rowIndex = {1}; + boolean isLink=PortalVITypeFlag.LinkType.getIntVal()== portalVIDTOList.get(0).getTypeFlag()?true:false; + try { + BaseResult baseResult= quereyTemplateServiceI.queryTemplateList( portalVIDTOList.get(0).getTypeName(),isLink); + if(baseResult.isSuccess()){ + final int[] rowIndex1 = {1}; + Collection< QTD> qtdList= baseResult.getData(); + if(!CollectionUtils.isEmpty(qtdList)){ + qtdList.stream().forEach(qtd -> { + qtRowDataList.add(new WriteExcelData(rowIndex1[0], 0, qtd.btmName)); + qtRowDataList.add(new WriteExcelData(rowIndex1[0], 1, qtd.linkTypeName)); + qtRowDataList.add(new WriteExcelData(rowIndex1[0], 2, qtd.name)); + qtRowDataList.add(new WriteExcelData(rowIndex1[0], 3, VciBaseUtil.array2String(qtd.abNames))); + rowIndex1[0]++; + }); + + } + } + } catch (PLException e) { + e.printStackTrace(); + } + portalVIDTOList.stream().forEach(portalVIDTO -> { + //鍏堟槸鍚嶇О + rowDataList.add(new WriteExcelData(rowIndex[0], 0, portalVIDTO.getTypeName()));//涓氬姟绫诲瀷鍚嶇О + rowDataList.add(new WriteExcelData(rowIndex[0], 1, portalVIDTO.getViName()));//鍚嶇О + rowDataList.add(new WriteExcelData(rowIndex[0], 2, PortalVITypeFlag.getByIntVal(portalVIDTO.getTypeFlag()).getLabel()));//涓氬姟绫诲瀷 + rowDataList.add(new WriteExcelData(rowIndex[0], 3,PortalVIType.getByIntVal(portalVIDTO.getViType()).getLabel()));//琛ㄥ崟绫诲瀷 + try { + String prmText=UITools.getPRMText(prmDOO2VIS(portalVIDTO.getPrm(),portalVIDTO.getViType())); + String prmTextFileName= ObjectUtility.getNewObjectID36() + ".txt"; + String prmTextFileNameAllName = xfileName + "." + prmTextFileName; + if (portalVIDTO.getViType() == PortalVIType.Table.getIntVal()) {//濡傛灉瀵煎叆鐨則able锛屽垯闇�瑕佹牎楠岃〃鏍煎叧鑱旂殑琛ㄥ崟鏄惁瀛樺湪锛屽鏋滀笉瀛樺湪鍒欏湪execl涓槸鍚﹀瓨鍦� + PortalVI[] pvs = platformClientUtil.getPortalService().getPortalVIArrayByTypeName(portalVIDTO.getTypeName()); + PRMDTO prmdto= portalVIDTO.getPrm(); + List<PRMItemDTO> prmItemDTOS= prmdto.getPrmItemList(); + if (!CollectionUtils.isEmpty(Arrays.asList(pvs))) { + Optional.ofNullable(prmItemDTOS).orElseGet(()->new ArrayList<>()).stream().forEach(prmItemDTO -> { + Arrays.stream(pvs).forEach(pv -> { + if (prmItemDTO.getItemInObj().equals(pv.typeName + ":" + pv.viName)) { + prmItemDTO.setItemInObj(pv.id); + } + }); + + }); + } + } + writeDataToFile(defaultTempFolder,prmTextFileNameAllName,prmText); + rowDataList.add(new WriteExcelData(rowIndex[0], 4,prmTextFileName));//閰嶇疆鏂囨湰 + + } catch (Throwable e) { + e.printStackTrace(); + } + String attributeStr=""; + try { + List<OsAttributeVO> osAttributeVOList=osAttributeService.getOsAttributeVOSByBtName(portalVIDTO.getTypeName(),portalVIDTO.getTypeFlag(),false); + if(!CollectionUtils.isEmpty(osAttributeVOList)){ + List<String> filedList= osAttributeVOList.stream().map(OsAttributeVO::getId).collect(Collectors.toList()); + attributeStr=VciBaseUtil.array2String(filedList.toArray(new String[]{})); + } + } catch (Exception e) { + e.printStackTrace(); + } + rowDataList.add(new WriteExcelData(rowIndex[0], 5, attributeStr));//灞炴�� + String qtName=""; + try { + QTInfo qt = platformClientUtil.getQTDService().getQT(portalVIDTO.getPrm().getFormQtName()); + qtName=qt.qtName; + rowDataList.add(new WriteExcelData(rowIndex[0], 6,qtName));//鏌ヨ妯℃澘鍚嶇О + String qtFileName = ObjectUtility.getNewObjectID36() + ".txt"; + String qtFileNameAllName = xfileName + "." + qtFileName; + writeDataToFile(defaultTempFolder,qtFileNameAllName,qt.qtText); + rowDataList.add(new WriteExcelData(rowIndex[0], 7, qtFileName));//鏌ヨ妯℃澘閰嶇疆鏂囨湰 + rowDataList.add(new WriteExcelData(rowIndex[0], 8, qt.btmName));//鏌ヨ妯℃澘涓氬姟绫诲瀷 + } catch (PLException e) { + e.printStackTrace(); + } + + rowIndex[0]++; + }); + } + + + /* String excelTemplateFileName = "/excelTemplate/dataBaseExport.xls"; + if(this.getClass().getResource(excelTemplateFileName) == null){ + throw new VciBaseException("璇疯仈绯荤鐞嗗憳锛岀郴缁熶腑缂哄皯{0}杩欎釜妯℃澘鏂囦欢",new String[]{excelTemplateFileName}); + } + try { + ExcelUtil.copyFileFromJar(excelTemplateFileName,excelFile); + //杩欎釜鏂规硶浼氬叧闂枃浠舵祦 + }catch (Throwable e){ + String msg = "浠庢ā鏉挎枃浠舵嫹璐濆埌鐩爣鏂囦欢鍑虹幇浜嗛敊璇�"; + if(logger.isErrorEnabled()){ + logger.error(msg,e); + } + throw new VciBaseException(msg+",{0}",new String[]{excelFileName},e); + }*/ + try{ + WriteExcelOption excelOption = new WriteExcelOption(); + excelOption.addSheetDataList("portalvi",rowDataList); + excelOption.addSheetDataList("QTD",qtRowDataList); + ExcelUtil.writeDataToFile(excelFile,excelOption); + }catch (Throwable e){ + String msg = "鎶婃暟鎹啓鍏ュ埌excel鏂囦欢涓嚭鐜伴敊璇�"; + if(logger.isErrorEnabled()){ + logger.error(msg,e); + } + throw new VciBaseException(msg+",{0}",new String[]{excelFileName},e); + } + File zip = ZipUtil.zip(defaultTempFolder); + FileUtil.del(defaultTempFolder + File.separator); + //鏈�鍚庤繑鍥瀍xcel鏂囦欢鍚嶇О + return zip.getAbsoluteFile().getAbsolutePath(); + } + + @Override + public BaseResult importData(File file)throws Throwable{ + if (file == null) { + return BaseResult.fail(FrameWorkLangCodeConstant.IMPORT_FAIL, new String[]{"鏃犲鍏ョ殑鏂囦欢"}); + } + try { + File unzip = ZipUtil.unzip(file); + String filePath=unzip.getAbsolutePath() + File.separator + "export.xls"; + File btmExcel = new File(filePath); + List<PortalVIPO> portalVIPOList=new ArrayList<>(); + List<QTDPO> QTDPOPOList=new ArrayList<>(); + try { + ReadExcelOption PortalVIPOReadExcelOption=new ReadExcelOption(); + PortalVIPOReadExcelOption.setSheetName("portalvi"); + PortalVIPOReadExcelOption.setSheetIndex(0); + portalVIPOList = ExcelUtil.readDataObjectFromExcel(btmExcel, PortalVIPO.class,PortalVIPOReadExcelOption); + //浠巈xecl鑾峰彇鏌ヨ妯℃澘瀹氫箟. + /* ReadExcelOption QTDPOReadExcelOption=new ReadExcelOption(); + QTDPOReadExcelOption.setSheetName("QTD"); + QTDPOReadExcelOption.setSheetIndex(1); + QTDPOPOList = ExcelUtil.readDataObjectFromExcel(btmExcel, QTDPO.class,QTDPOReadExcelOption);*/ + }catch (VciBaseException e){ + throw new Throwable("璇诲彇execl鏁版嵁鍑洪敊锛�"+e.getMessage()); + } + List<PortalVI> portalVIList=new ArrayList<>(); + if(!CollectionUtils.isEmpty(portalVIPOList)){ + Map<String,String>formNameMap=new HashMap<>(); + StringBuffer checkInObj=new StringBuffer(); + StringBuffer checkPortalVI=new StringBuffer(); + List<String> sjkExitsList=new ArrayList<>(); + portalVIPOList.stream().forEach(portalVIPO -> { + PortalVI portalVI=new PortalVI(); + String ploid = ObjectUtility.getNewObjectID36(); + portalVI.id=ploid; + portalVI.viName=portalVIPO.getViName(); + portalVI.typeName=portalVIPO.getTypeName(); + portalVI.viType=PortalVIType.getByLabel(portalVIPO.getViTypeText()).getIntVal(); + portalVI.typeFlag=PortalVITypeFlag.getByLabel(portalVIPO.getTypeFlagText()).getIntVal(); + String fileName= portalVIPO.getPrmFileName(); + String prmStr = readLines(filePath+"."+fileName); + try { + PortalVI[] pvs = platformClientUtil.getPortalService().getPortalVIArrayByTypeName(portalVI.typeName); + if (portalVI.viType == PortalVIType.Table.getIntVal()) {//濡傛灉瀵煎叆鐨則able锛屽垯闇�瑕佹牎楠岃〃鏍煎叧鑱旂殑琛ㄥ崟鏄惁瀛樺湪锛屽鏋滀笉瀛樺湪鍒欏湪execl涓槸鍚﹀瓨鍦� + formNameMap.put(portalVI.typeName + ":" + portalVI.viName, ploid); + PRMDO prmObj = UITools.getPRM(prmStr); + List<PRMItemDO> prmItemList = prmObj.getPrmItemList(); + + if (!CollectionUtils.isEmpty(prmItemList)) { + prmItemList.stream().forEach(prmItemDO -> { + if (!CollectionUtils.isEmpty(Arrays.asList(pvs))) { + Arrays.stream(pvs).forEach(pv -> { + if (prmItemDO.getItemInObj().equals(portalVI.typeName + ":" + pv.viName)) { + prmItemDO.setItemInObj(pv.id); + } + }); + } else { + if (formNameMap.containsKey(prmItemDO.getItemInObj())) { + prmItemDO.setItemInObj(formNameMap.get(prmItemDO.getItemInObj())); + } else { + if (!checkInObj.toString().contains(prmItemDO.getItemInObj())) { + String[] split = prmItemDO.getItemInObj().split(":"); + checkInObj.append(split[1]).append(","); + } + } + } + + }); + } + prmStr = UITools.getPRMText(prmObj); + } + portalVI.prm = prmStr.trim(); + //鏍¢獙琛ㄥ崟鏄惁瀛樺湪 + if (!CollectionUtils.isEmpty(Arrays.asList(pvs))) { + Arrays.stream(pvs).forEach(pv -> { + if (pv.viName.equals(portalVI.viName)) { + checkPortalVI.append(portalVI.viName).append(","); + } + }); + } + //鏍¢獙灞炴�ф槸鍚︽纭� + List<OsAttributeVO> osAttributeVOList = osAttributeService.getOsAttributeVOSByBtName(portalVI.typeName, portalVI.typeFlag,false); + if (!CollectionUtils.isEmpty(osAttributeVOList)) { + List<String> filedList = osAttributeVOList.stream().map(OsAttributeVO::getId).collect(Collectors.toList()); + List<String> attributeList = VciBaseUtil.str2List(portalVIPO.getAttributeKey()); + //鏁版嵁搴撲笉瀛樺湪 + List<String> sjkExitsLists = Optional.ofNullable(attributeList).orElseGet(() -> new ArrayList<>()).stream().filter(s -> !attributeList.contains(s)).collect(Collectors.toList()); + sjkExitsList.addAll(sjkExitsLists); + } + }catch (Throwable e){ + e.printStackTrace(); + } + portalVIList.add(portalVI); + if(StringUtils.isNotBlank(portalVIPO.getQtName())&&StringUtils.isNotBlank(portalVIPO.getQtNameFile())) { + QTInfo qt = new QTInfo(); + String qtText = readLines(filePath + "." + portalVIPO.getQtNameFile()); + qt.qtText=qtText; + qt.qtName = portalVIPO.getQtName(); + qt.btmName=portalVIPO.getQtName(); + QTInfo qt2 = null; + try { + qt2 = platformClientUtil.getQTDService().getQT(qt.qtName); + if (qt2 == null) { + platformClientUtil.getQTDService().saveQT(qt); + } + } catch (PLException e) { + e.printStackTrace(); + } + + } + }); + if (checkInObj.length() > 0) { + throw new Throwable( checkInObj.toString() + "琛ㄥ崟涓嶅瓨鍦紒"); + } + if (checkPortalVI.length() > 0) { + throw new Throwable( checkInObj.toString() + "鍚嶇О宸茬粡瀛樺湪锛�"); + } + if(sjkExitsList.size()>0){ + throw new Throwable( checkInObj.toString() + "灞炴�у湪绫诲瀷涓笉瀛樺湪锛�"); + } + for (PortalVI pvi : portalVIList) { + platformClientUtil.getPortalService().savePortalVI(pvi); + } + } + }catch (Throwable e){ + // throw new Throwable("瀵煎叆澶辫触锛�"+e.getMessage()); + return BaseResult.fail("瀵煎叆澶辫触锛�"+e.getMessage()); + } + return BaseResult.success("瀵煎叆鎴愬姛"); + } + + private String readLines(String filePath){ + StringBuffer sb=new StringBuffer(); + FileInputStream prmFile=null; + try { + prmFile = new FileInputStream(filePath); + List<String> prm= IOUtils.readLines(prmFile,"UTF-8"); + prm.stream().forEach(s -> { + sb.append(s); + }); + } catch (IOException e) { + IOUtils.closeQuietly(prmFile); + e.printStackTrace(); + }finally { + IOUtils.closeQuietly(prmFile); + } + return sb.toString(); + } + + /** + * 鎷疯礉鏁版嵁鍒皐ord妯℃澘涓� + * @param fileName 瑕佸啓鍏ョ殑鏁版嵁 + * @return word 鏂囦欢璺緞 + */ + public String writeDataToFile(String defaultTempFolder,String fileName,String str){ + String tempFolder = LocalFileUtil.getDefaultTempFolder(); + //鎷疯礉鏂囦欢 + String filePath = tempFolder + File.separator + fileName; + File file = new File(filePath); + FileOutputStream out = null; + try { + file.createNewFile(); + out= new FileOutputStream(file); + IOUtils.write(str,out); + }catch (Throwable e){ + IOUtils.closeQuietly(out); + String msg = "鍦ㄥ垱寤烘枃浠剁殑鏃跺�欏嚭鐜颁簡閿欒"; + if(logger.isErrorEnabled()){ + logger.error(msg,e); + } + throw new VciBaseException(msg+",{0}",new String[]{filePath},e); + }finally { + IOUtils.closeQuietly(out); + //绉诲姩灞炴�у埌閾炬帴绫诲瀷鏂囦欢澶归噷闈㈠幓 + FileUtil.move(file, new File(defaultTempFolder),true); + FileUtil.del(tempFolder); + } + return filePath; + } + + public List<PortalVIDTO> listByIds(Collection idList){ + List<PortalVIDTO> portalVIVOList=new ArrayList<>(); + if(CollectionUtils.isEmpty(idList)){ + throw new VciBaseException("璇烽�夋嫨闇�瑕佸鍑虹殑鏁版嵁"); + } + List<PortalVI> portalVIList=new ArrayList<>(); + idList.stream().forEach(id->{ + try { + PortalVI portalVI= platformClientUtil.getPortalService().getPortalVIById(id.toString()); + portalVIList.add(portalVI); + } catch (PLException e) { + e.printStackTrace(); + } + }); + portalVIVOList= portalVIO2DTOS(portalVIList); + return portalVIVOList; + } + + 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+"锛屾湭璁剧疆"); } if(PortalVIType.Table.getIntVal()==portalVIDTO.getViType()){//濡傛灉鏄〃鏍肩殑鐨勬牎楠� labelName=PortalVIType.Table.getName(); - PRMItemDTO prmItemDTO= portalVIDTO.getPrm().getPrmItemList().get(0); + PRMItemDTO prmItemDTO = portalVIDTO.getPrm().getPrmItemList().get(0); //姣忛〉鏄剧ず鏍¢獙 String rtnContent = isCorrectPageNums(prmItemDTO.getItemPageSize()); if (StringUtils.isNotBlank(rtnContent)) { throw new VciBaseException(rtnContent); } - }else{ - } labelName= PortalVIType.getByIntVal(portalVIDTO.getViType()).getLabel(); if(!_isBtm){ - PortalVI[] portalVIS= platformClientUtil.getPortalService().getPortalVIArrayByTypeName(portalVIDTO.getTypeName()); + PortalVI[] portalVIS = platformClientUtil.getPortalService().getPortalVIArrayByTypeName(portalVIDTO.getTypeName()); for (int i = 0; i < portalVIS.length; i++) { - PortalVI portalVI= portalVIS[i]; - String viName= portalVI.viName; + PortalVI portalVI = portalVIS[i]; + String viName = portalVI.viName; if(isEdit){//濡傛灉涓轰慨鏀� try { - PortalVI oldPortalVI= platformClientUtil.getPortalService().getPortalVIById(portalVIDTO.getId()); - flag=platformClientUtil.getPortalService().judgeUpdateButton(oldPortalVI.typeFlag, oldPortalVI.viName, oldPortalVI.typeName); + PortalVI oldPortalVI = platformClientUtil.getPortalService().getPortalVIById(portalVIDTO.getId()); + flag = platformClientUtil.getPortalService().judgeUpdateButton(oldPortalVI.typeFlag, oldPortalVI.viName, oldPortalVI.typeName); if (flag && (StringUtils.isNotBlank(portalVIDTO.getViName()))&&(!oldPortalVI.viName.equals(portalVIDTO.getViName()))) { throw new Throwable("璇�"+labelName+"宸茬粡琚紩鐢紝涓嶈兘淇敼鍚嶇О!"); } } catch (PLException e) { - throw new Throwable("鏌ヨ"); + throw new Throwable("鏌ヨ鍘熸湁琛ㄥ崟鍑虹幇寮傚父:"+e.getMessage()); } if (!portalVI.id.equals(portalVIDTO.getId())) { if (portalVI.viName.equals(portalVIDTO.getViName())) { @@ -175,48 +704,30 @@ }else{ flag=platformClientUtil.getPortalService().judgeUpdateButton(portalVIDTO.getTypeFlag(), portalVIDTO.getViName(), portalVIDTO.getTypeName()); } - flag= saveForm(portalVIDTO,isEdit); + PortalVI pvi = portalVIDTOO2VI(portalVIDTO); + if (!isEdit) { + flag= platformClientUtil.getPortalService().savePortalVI(pvi); + } else { + flag= platformClientUtil.getPortalService().updatePortalVI(pvi); + } if(flag){ return BaseResult.success("淇濆瓨"+labelName+"鎴愬姛!"); }else{ new Throwable("淇濆瓨"+labelName+"澶辫触!"); } } catch (Throwable e) { - // throw new VciBaseException("淇濆瓨琛ㄥ崟鍑虹幇寮傚父锛�"+e.getMessage()); - return BaseResult.fail("淇濆瓨"+labelName+"鍑虹幇寮傚父锛�"+e.getMessage()); + String exceptionMessage = "淇濆瓨"+labelName+"鍑虹幇寮傚父锛�"+ VciBaseUtil.getExceptionMessage(e); + logger.error(exceptionMessage); + return BaseResult.fail(exceptionMessage); + } return BaseResult.success("淇濆瓨"+labelName+"鎴愬姛!"); - } - - /** - * 琛ㄥ崟/琛ㄦ牸 - * @param portalVIDTO - * @param isEdit - * @return - */ - private boolean saveForm(PortalVIDTO portalVIDTO,boolean isEdit) { - List<PRMItemDO> prmItemList = new ArrayList<PRMItemDO>(); - try { - PortalVI pvi=portalVIDTOO2VI(portalVIDTO); - boolean res=false; - if (!isEdit) { - res= platformClientUtil.getPortalService().savePortalVI(pvi); - } else { - res= platformClientUtil.getPortalService().updatePortalVI(pvi); - } - return res; - } catch (Throwable e) { - e.printStackTrace(); - return false; - } } @Override public Map<String, PortalVIVO> selectAllPortalVIMap() throws VciBaseException { return null; } - - /** * 鍒ゆ柇姣忛〉琛屾暟瀹氫箟鏄惁姝g‘ @@ -264,7 +775,6 @@ return ""; } - /** * 鏋氫妇鐨勬暟鎹璞¤浆鎹负鏄剧ず瀵硅薄 * @@ -280,6 +790,7 @@ }); return portalVIVOS; } + /** * 琛ㄥ崟鐨勬暟鎹璞¤浆鎹负鏄剧ず瀵硅薄 * @param portalVIDTOS 琛ㄥ崟鐨勫璞� @@ -297,18 +808,33 @@ /** * 琛ㄥ崟鐨勬暟鎹璞¤浆鎹负鏄剧ず瀵硅薄 + * @param PortalVIS 琛ㄥ崟鐨勫璞� + * @return 鏄剧ず瀵硅薄 + */ + @Override + public List<PortalVIDTO> portalVIO2DTOS(Collection<PortalVI> PortalVIS) { + List<PortalVIDTO> PortalVIDTOS = new ArrayList<>(); + Optional.ofNullable(PortalVIS).orElseGet(()->new ArrayList<>()).stream().forEach(PortalVI -> { + PortalVIDTO PPortalVIDTO = portalVIO2DTO(PortalVI); + PortalVIDTOS.add(PPortalVIDTO); + }); + return PortalVIDTOS; + } + + /** + * 琛ㄥ崟鐨勬暟鎹璞¤浆鎹负鏄剧ず瀵硅薄 * @param portalVIDTO * @return */ @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(); + public PortalVI portalVIDTOO2VI(PortalVIDTO portalVIDTO) { + PortalVI portalVI = new PortalVI(); + portalVI.id = StringUtils.isNotBlank(portalVIDTO.getId()) ? portalVIDTO.getId() : WebUtil.getPk(); + 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); @@ -316,6 +842,25 @@ e.printStackTrace(); } return portalVI; + } + + /** + * 琛ㄥ崟鐨勬暟鎹璞¤浆鎹负鏄剧ず瀵硅薄 + * @param portalVI + * @return + */ + @Override + public PortalVIDTO portalVIO2DTO(PortalVI portalVI) { + PortalVIDTO portalVIDTO=new PortalVIDTO(); + portalVIDTO.setId(portalVI.id); + portalVIDTO.setTypeFlag(portalVI.typeFlag); + portalVIDTO.setTypeName(portalVI.typeName); + portalVIDTO.setViName(portalVI.viName); + portalVIDTO.setViType(portalVI.viType); + short viType =portalVIDTO.getViType(); + PRMDO prmdo= UITools.getPRM(portalVI.prm); + portalVIDTO.setPrm(prmDOO2DTOS(prmdo,viType)); + return portalVIDTO; } /** @@ -332,17 +877,36 @@ return prmdo; } + /** + * 琛ㄥ崟鏁版嵁瀵硅薄杞崲 + * @param prmdo + * @param viType + * @return + */ + private PRMDTO prmDOO2DTOS( PRMDO prmdo, short viType) { + PRMDTO prmdto=new PRMDTO(); + prmdto.setShowCols(prmdo.getShowCols()); + prmdto.setFormQtName(prmdo.getFormQtName()); + prmdto.setPrmItemList(pRMItemDOO2DTOS(prmdo.getPrmItemList(),viType)); + return prmdto; + } + @Override public PortalVIVO portalVIDOO2VO(PortalVI portalVI) { - PortalVIVO portalVIVO=new PortalVIVO(); + PortalVIVO portalVIVO = new PortalVIVO(); portalVIVO.setId(portalVI.id); + portalVIVO.setTypeFlagText(PortalVITypeFlag.getByIntVal(portalVI.typeFlag).getLabel()); portalVIVO.setTypeFlag(portalVI.typeFlag); portalVIVO.setTypeName(portalVI.typeName); portalVIVO.setViName(portalVI.viName); portalVIVO.setViType(portalVI.viType); - String prm= portalVI.prm; - PRMDO prmdo= UITools.getPRM(prm); - portalVIVO.setPrm(prmDOO2VOS(prmdo,portalVI.viType)); + portalVIVO.setViTypeText(PortalVIType.getByIntVal(portalVI.viType).getLabel()); + + String prm = portalVI.prm; + if(StringUtils.isNotBlank(prm)) { + PRMDO prmdo = UITools.getPRM(prm); + portalVIVO.setPrm(prmDOO2VOS(prmdo, portalVI.viType)); + } return portalVIVO; } private PRMVO prmDOO2VOS(PRMDO prmdo,short viType){ @@ -366,6 +930,15 @@ Optional.ofNullable(prmItemDTOS).orElseGet(()->new ArrayList<>()).stream().forEach(PRMItemDTO -> { PRMItemDO PRMItemDO = pRMItemDTOO2DO(PRMItemDTO,viType); portalVIVOS.add(PRMItemDO); + }); + return portalVIVOS; + } + + public List<PRMItemDTO> pRMItemDOO2DTOS(Collection<PRMItemDO> prmItemDOS,short viType) { + List<PRMItemDTO> portalVIVOS = new ArrayList<>(); + Optional.ofNullable(prmItemDOS).orElseGet(()->new ArrayList<>()).stream().forEach(prmItemDO -> { + PRMItemDTO prmItemDTO = pRMItemDOO2DTO(prmItemDO,viType); + portalVIVOS.add(prmItemDTO); }); return portalVIVOS; } @@ -401,7 +974,7 @@ prmItemDO.setItemHrefConf(prmItemDO.getItemHrefConf());//瓒呴摼鎺ラ厤缃� prmItemDO.setItemTips(prmItemDTO.getItemTips()); prmItemDO.setItemTrim(prmItemDTO.getItemTrim()); - prmItemDO.setItemDateFormat(prmItemDTO.getItemDateFormat()); + //prmItemDO.setItemDateFormat(prmItemDTO.getItemDateFormat()); prmItemDO.setItemCtrlDisplyCondition(prmItemDTO.getItemCtrlDisplyCondition());////鎺у埗鏄剧ず鏉′欢 prmItemDO.setItemEditableProgram(prmItemDTO.getItemEditableProgram()); prmItemDO.setItemEditCondition(prmItemDTO.getItemEditCondition()); @@ -432,6 +1005,15 @@ prmItemDO.setItemHttpPathField(prmItemDTO.getItemHttpPathField()); if(viType==PortalVIType.Table.getIntVal()) {//濡傛灉鏄〃鏍� initTableConfigDTOO2DOData(prmItemDO,prmItemDTO); + }else{ + List<String> itemValueList=new ArrayList<>(); + List<KeyValue> keyValueList=prmItemDTO.getItemKeyValueList(); + Optional.ofNullable(keyValueList).orElseGet(()->new ArrayList<>()).stream().forEach(keyValue -> { + String value= keyValue.getValue()+"{"+keyValue.getKey()+"}"; + itemValueList.add(value); + }); + prmItemDO.setItemValueList(itemValueList); + } return prmItemDO; } @@ -496,12 +1078,100 @@ prmItemVO.setItemIsHttpSave(prmItemDO.getItemIsHttpSave()); prmItemVO.setItemHttpVolumnPath(prmItemDO.getItemHttpVolumnPath()); prmItemVO.setItemHttpPathField(prmItemDO.getItemHttpPathField()); + if(viType==PortalVIType.Table.getIntVal()) {//濡傛灉鏄〃鏍� initTableConfigDOO2VOData(prmItemVO,prmItemDO); + }else{ + List<String> enumList= prmItemDO.getItemValueList(); + List<KeyValue>itemKeyValueList=new ArrayList<>(); + Optional.ofNullable(enumList).orElseGet(()->new ArrayList<>()).stream().forEach(enumValue->{ + List<String> keyValueList= VciBaseUtil.str2List(VciBaseUtil.removeComma(enumValue,"}"),"\\{"); + KeyValue keyValue=new KeyValue(); + keyValue.setKey(keyValueList.get(1)); + keyValue.setValue(keyValueList.get(0)); + itemKeyValueList.add(keyValue); + }); + prmItemVO.setItemKeyValueList(itemKeyValueList); } return prmItemVO; } - + /** + * 鏁版嵁瀵硅薄杞崲 + * @param prmItemDO 鏁版嵁瀵硅薄 + * @param viType 琛ㄥ崟绫诲瀷 + * @return + */ + private PRMItemDTO pRMItemDOO2DTO(PRMItemDO prmItemDO,short viType) { + PRMItemDTO prmItemDTO=new PRMItemDTO(); + prmItemDTO.setItemBat(prmItemDO.getItemBat()); + prmItemDTO.setItemCols(prmItemDO.getItemCols()); + prmItemDTO.setItemEQ(prmItemDO.getItemEQ()); + prmItemDTO.setItemDbl(prmItemDO.getItemDbl()); + prmItemDTO.setItemCut(prmItemDO.getItemCut()); + prmItemDTO.setItemOR(prmItemDO.getItemOR()); + prmItemDTO.setItemAddFilter(prmItemDO.getItemAddFilter()); + prmItemDTO.setItemField(prmItemDO.getItemField()); + prmItemDTO.setItemImgWH(prmItemDO.getItemImgWH()); + prmItemDTO.setItemCtrlDisplyCol(prmItemDO.getItemCtrlDisplyCol());//鎺у埗鏄剧ず鍒� + prmItemDTO.setItemDateFormat(prmItemDO.getItemDateFormat());// 鏁版嵁涓烘棩鏈熺被鍨嬫椂鐨勬牸寮忓寲瀛楃涓� 濡� yyyy-MM-dd HH:mm:ss + prmItemDTO.setItemInObj(prmItemDO.getItemInObj()); + prmItemDTO.setItemName(prmItemDO.getItemName()); + prmItemDTO.setItemCustomClass(prmItemDO.getItemCustomClass());//鑷畾涔夌被璺緞 + prmItemDTO.setItemIsHidden(prmItemDO.getItemIsHidden()); + prmItemDTO.setItemIsEditable(prmItemDO.getItemIsEditable()); + prmItemDTO.setItemIsRequired(prmItemDO.getItemIsRequired()); + prmItemDTO.setItemFieldWidth(prmItemDO.getItemFieldWidth()); + prmItemDTO.setItemTxf(prmItemDO.getItemTxf()); + prmItemDTO.setItemRows(prmItemDO.getItemRows()); + prmItemDTO.setItemHrefConf(prmItemDO.getItemHrefConf());//瓒呴摼鎺ラ厤缃� + prmItemDTO.setItemTips(prmItemDO.getItemTips()); + prmItemDTO.setItemTrim(prmItemDO.getItemTrim()); + prmItemDTO.setItemDateFormat(prmItemDO.getItemDateFormat()); + prmItemDTO.setItemCtrlDisplyCondition(prmItemDO.getItemCtrlDisplyCondition());////鎺у埗鏄剧ず鏉′欢 + prmItemDTO.setItemEditableProgram(prmItemDO.getItemEditableProgram()); + prmItemDTO.setItemEditCondition(prmItemDO.getItemEditCondition()); + prmItemDTO.setItemHrefFields(prmItemDO.getItemHrefFields());//瓒呴摼鎺ュ瓧娈� + prmItemDTO.setItemValueList(prmItemDO.getItemValueList()); + prmItemDTO.setItemValue(prmItemDO.getItemValue()); + prmItemDTO.setItemStyle(prmItemDO.getItemStyle()); + prmItemDTO.setItemShowExpression(prmItemDO.getItemShowExpression());// 鏄剧ず琛ㄨ揪寮� ${aa}-${bb} + prmItemDTO.setItemSeniorQueryColsCounts(prmItemDO.getItemSeniorQueryColsCounts());//楂樼骇鏌ヨ鍚勫垪浣跨敤娆℃暟 + prmItemDTO.setItemQuerySql(prmItemDO.getItemQuerySql());//楂樼骇鏌ヨsql + prmItemDTO.setItemType(prmItemDO.getItemType());//灞炴�у熀鏈被鍨� + prmItemDTO.setItemTypeText(ItemTypeEnum.getTextByValue(prmItemDO.getItemType()));//灞炴�у熀鏈被鍨嬫樉绀哄�� + prmItemDTO.setItemScript(prmItemDO.getItemScript()); + prmItemDTO.setItemRight(prmItemDO.getItemRight()); + prmItemDTO.setItemQueryRefFields(prmItemDO.getItemQueryRefFields());//鏌ヨ鍏宠仈鍒� + prmItemDTO.setItemQtName(prmItemDO.getItemQtName()); + prmItemDTO.setItemParentFolderName(prmItemDO.getItemParentFolderName());//鐖舵枃浠跺す鍚嶇О + prmItemDTO.setItemPageSize(prmItemDO.getItemPageSize()); + prmItemDTO.setItemOutType(prmItemDO.getItemOutType()); + prmItemDTO.setItemOutFields(prmItemDO.getItemOutFields()); + prmItemDTO.setItemListVal(prmItemDO.getItemListVal());//鍙傜収鍊� + prmItemDTO.setItemListTxt(prmItemDO.getItemListTxt()); + prmItemDTO.setItemListTable(prmItemDO.getItemListTable()); + prmItemDTO.setItemKeyFields(prmItemDO.getItemKeyFields()); + prmItemDTO.setItemIsShowFolder(prmItemDO.getItemIsShowFolder());//鏄惁鏄剧ず鏂囦欢澶� + prmItemDTO.setItemIsNavigatorExpand(prmItemDO.getItemIsNavigatorExpand());////鏌ヨ鍖哄煙鏄剧ず鎺у埗 + prmItemDTO.setItemIsHttpSave(prmItemDO.getItemIsHttpSave()); + prmItemDTO.setItemHttpVolumnPath(prmItemDO.getItemHttpVolumnPath()); + prmItemDTO.setItemHttpPathField(prmItemDO.getItemHttpPathField()); + if(viType==PortalVIType.Table.getIntVal()) {//濡傛灉鏄〃鏍� + initTableConfigDOO2VOData(prmItemDTO,prmItemDO); + }else{ + List<String> enumList= prmItemDO.getItemValueList(); + List<KeyValue>itemKeyValueList=new ArrayList<>(); + Optional.ofNullable(enumList).orElseGet(()->new ArrayList<>()).stream().forEach(enumValue->{ + List<String> keyValueList= VciBaseUtil.str2List(VciBaseUtil.removeComma(enumValue,"}"),"\\{"); + KeyValue keyValue=new KeyValue(); + keyValue.setKey(keyValueList.get(1)); + keyValue.setValue(keyValueList.get(0)); + itemKeyValueList.add(keyValue); + }); + prmItemDTO.setItemKeyValueList(itemKeyValueList); + } + return prmItemDTO; + } /** * 鍒濆鍖栬〃鏍兼墍鐢ㄧ壒娈婂瓧娈甸厤缃� * @param prmItemVO @@ -510,13 +1180,21 @@ private void initTableConfigDOO2VOData(PRMItemVO prmItemVO,PRMItemDO prmItemDO){ prmItemVO.setItemFieldWidthList(initItemFieldWidthList(prmItemDO.getItemOutFields(),prmItemDO.getItemFieldWidth()));//鍒楁樉绀哄娈� itemOutFieldList 鐩稿尮閰� prmItemVO.setItemSeniorQueryBOS(initItemSeniorQueryBOData(prmItemDO.getItemSeniorQueryCols(),prmItemDO.getItemSeniorQueryColsCounts(),prmItemDO.getItemQuerySql()));//楂樼骇鏌ヨ瀵硅薄 - List<String> allKeyList= getRefFormVIName(prmItemVO.getItemInObj()); - List<String> itemOutFieldList =VciBaseUtil.str2List(prmItemVO.getItemOutFields()); - List<String> itemKeyFieldList =VciBaseUtil.str2List(prmItemVO.getItemKeyFields()); - List<String> itemSelectoutFieldList= allKeyList.stream().filter(s ->!itemOutFieldList.stream().map(s1 -> s1).collect(Collectors.toList()).contains(s) ).collect(Collectors.toList()); - prmItemVO.setItemSelectoutFieldList(itemSelectoutFieldList);//寰呴�夋嫨鐨勫睘鎬у瓧娈� + List<String> allKeyList= getRefFormVIName(prmItemDO.getItemInObj()); + List<String> itemOutFieldList =VciBaseUtil.str2List(prmItemDO.getItemOutFields()); + List<String> itemKeyFieldList =VciBaseUtil.str2List(prmItemDO.getItemKeyFields()); + List<String> itemSelectOutFieldList= allKeyList.stream() + .filter(s -> !itemOutFieldList.contains(s)) + .collect(Collectors.toList()); + prmItemVO.setItemSelectOutFieldList(itemSelectOutFieldList);//寰呴�夋嫨鐨勫睘鎬у瓧娈� prmItemVO.setItemOutFieldList(itemOutFieldList);//闇�瑕佷娇鐢ㄧ殑闆嗗悎 - List<String> itemSearchFieldList= itemOutFieldList.stream().filter(s ->!itemKeyFieldList.stream().map(s1 -> s1).collect(Collectors.toList()).contains(s) ).collect(Collectors.toList()); + // List<String> itemSearchFieldList= itemOutFieldList.stream().filter(s ->!CollectionUtils.isEmpty(itemKeyFieldList).stream().map(s1 -> s1).collect(Collectors.toList()).contains(s) ).collect(Collectors.toList()); + List<String> itemSearchFieldList=new ArrayList<>(); + if(!CollectionUtils.isEmpty(itemKeyFieldList)){ + itemSearchFieldList= itemOutFieldList.stream().filter(s ->!itemKeyFieldList.contains(s)).collect(Collectors.toList()); + }else{ + itemSearchFieldList=itemOutFieldList; + } prmItemVO.setItemSearchFieldList(itemSearchFieldList);//寰呮悳绱㈠瓧娈� prmItemVO.setItemKeyFieldList(itemKeyFieldList);//鎼滅储瀛楁 } @@ -525,29 +1203,52 @@ * @param prmItemDTO * @param prmItemDO */ + private void initTableConfigDOO2VOData(PRMItemDTO prmItemDTO,PRMItemDO prmItemDO){ + prmItemDTO.setItemFieldWidthList(initItemFieldWidthList(prmItemDO.getItemOutFields(),prmItemDO.getItemFieldWidth()));//鍒楁樉绀哄娈� itemOutFieldList 鐩稿尮閰� + prmItemDTO.setItemSeniorQueryBOS(initItemSeniorQueryBOData(prmItemDO.getItemSeniorQueryCols(),prmItemDO.getItemSeniorQueryColsCounts(),prmItemDO.getItemQuerySql()));//楂樼骇鏌ヨ瀵硅薄 + List<String> allKeyList= getRefFormVIName(prmItemDO.getItemInObj()); + List<String> itemOutFieldList =VciBaseUtil.str2List(prmItemDO.getItemOutFields()); + List<String> itemKeyFieldList =VciBaseUtil.str2List(prmItemDO.getItemKeyFields()); + List<String> itemSelectOutFieldList= allKeyList.stream().filter(s ->!itemOutFieldList.stream().map(s1 -> s1).collect(Collectors.toList()).contains(s) ).collect(Collectors.toList()); + prmItemDTO.setItemSelectoutFieldList(itemSelectOutFieldList);//寰呴�夋嫨鐨勫睘鎬у瓧娈� + prmItemDTO.setItemOutFieldList(itemOutFieldList);//闇�瑕佷娇鐢ㄧ殑闆嗗悎 + List<String> itemSearchFieldList=new ArrayList<>(); + if(!CollectionUtils.isEmpty(itemKeyFieldList)){ + itemSearchFieldList= itemOutFieldList.stream().filter(s ->!itemKeyFieldList.contains(s)).collect(Collectors.toList()); + }else{ + itemSearchFieldList=itemOutFieldList; + } prmItemDTO.setItemSearchFieldList(itemSearchFieldList);//寰呮悳绱㈠瓧娈� + prmItemDTO.setItemKeyFieldList(itemKeyFieldList);//鎼滅储瀛楁 + } + /** + * 鍒濆鍖栬〃鏍兼墍鐢ㄧ壒娈婂瓧娈甸厤缃� + * @param prmItemDTO + * @param prmItemDO + */ private void initTableConfigDTOO2DOData(PRMItemDO prmItemDO,PRMItemDTO prmItemDTO){ - - prmItemDO.setItemOutFields(VciBaseUtil.array2String(prmItemDTO.getItemOutFieldList().toArray(new String[]{})));//闇�瑕佷娇鐢ㄧ殑瀛楁 - prmItemDO.setItemKeyFields(VciBaseUtil.array2String(prmItemDTO.getItemKeyFieldList().toArray(new String[]{})));//闇�瑕佹悳绱㈢殑瀛楁 - 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<String> itemSeniorQueryColsCountsList=new ArrayList<>(); - List<String> itemQuerySqlList=new ArrayList<>(); - itemSeniorQueryBOS.stream().forEach(itemSeniorQueryBO -> { - String itemSeniorQueryCols= itemSeniorQueryBO.getItemSeniorQueryCols(); - String itemSeniorQueryColsCounts=itemSeniorQueryBO.getItemSeniorQueryColsCounts(); - String itemQuerySql=itemSeniorQueryBO.getItemQuerySql(); + prmItemDO.setItemOutFields(VciBaseUtil.array2String(prmItemDTO.getItemOutFieldList().toArray(new String[]{}))); + //闇�瑕佷娇鐢ㄧ殑瀛楁prmItemDO.setItemKeyFields(CollectionUtils.isEmpty(prmItemDTO.getItemKeyFieldList())?"":VciBaseUtil.array2String(prmItemDTO.getItemKeyFieldList().toArray(new String[]{})));//闇�瑕佹悳绱㈢殑瀛楁 + // TODO: 2024/12/5 Ludc 杩欏効鍘婚噸鐢ㄧ殑涓嶅锛孠eyValue::getValue鏄瀹藉害鍘婚噸浜� + List<String> newItemFieldWidthList = prmItemDTO.getItemFieldWidthList().stream().distinct().map(KeyValue::getValue).collect(Collectors.toList()); + // TODO: 2024/12/5 Ludc 鍒嗛殧绗﹁鍜屽钩鍙扮粺涓�鐢�,鑰屼笉鏄敤: + prmItemDO.setItemFieldWidth(VciBaseUtil.array2String(newItemFieldWidthList.toArray(new String[]{}),","));//瀛楁瀹藉害 + List<ItemSeniorQueryBO> itemSeniorQueryBOS = prmItemDTO.getItemSeniorQueryBOS(); + List<String> itemSeniorQueryColsList = new ArrayList<>(); + List<String> itemSeniorQueryColsCountsList=new ArrayList<>(); + List<String> itemQuerySqlList = new ArrayList<>(); + itemSeniorQueryBOS.stream().forEach(itemSeniorQueryBO -> { + 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[]{}))); @@ -560,12 +1261,15 @@ */ 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(); - String with = itemFieldWidthList.get(i); + String with="250"; + if(i<itemFieldWidthList.size()) { + with = itemFieldWidthList.get(i); + } keyValue.setKey(itemOutFieldList.get(i)); keyValue.setValue(StringUtils.isBlank(with) ? "250" : with); keyValueList.add(keyValue); @@ -606,10 +1310,10 @@ } return itemSeniorQueryBOList; } + private List<String> getRefFormVIName(String refFormOid){ List<String> keyList=new ArrayList<>(); try { - PortalVI refFormVI = UITools.getService().getPortalVIById(refFormOid); PortalVIVO portalVIVO= portalVIDOO2VO(refFormVI); if(portalVIVO!=null&&portalVIVO.getPrm().getPrmItemList().size()>0){ -- Gitblit v1.9.3