package com.vci.web.service.impl; import com.vci.bo.ItemSeniorQueryBO; import com.vci.common.utility.ObjectUtility; import com.vci.corba.common.PLException; import com.vci.corba.portal.PortalService.GetPagePortalVIArrayByPageInfoResult; import com.vci.corba.portal.data.PortalVI; import com.vci.dto.*; import com.vci.model.*; import com.vci.pagemodel.*; 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.VciBaseUtil; import com.vci.web.enumpck.ItemTypeEnum; import com.vci.web.enumpck.PortalVIType; import com.vci.web.enumpck.PortalVITypeFlag; import com.vci.web.service.OsPortalVIServiceI; import com.vci.web.util.PlatformClientUtil; import com.vci.web.util.UITools; 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.util.*; import java.util.concurrent.atomic.AtomicBoolean; 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 private PlatformClientUtil platformClientUtil; @Override public void clearCache() { } /** * viType :Form("Form", "表单", (short)1), Table("Table", "表格", (short)0); * viTypeFlag: LinkType("LinkType", "链接类型的表单", (short)1), BtmType("BtmType", "业务类型的表单", (short)0); * @param baseQueryObject 查询对象 * @return */ @Override public DataGrid gridPortalVIVOs(BaseQueryObject baseQueryObject) { Map conditionMap= baseQueryObject.getConditionMap(); if(conditionMap==null){ conditionMap=new HashMap<>(); } String typeName=StringUtils.isBlank(conditionMap.get("typeName"))?"":conditionMap.get("typeName"); if(StringUtils.isBlank(typeName)){ return new DataGrid<>("没有选择业务类型"); } String viName=StringUtils.isBlank(conditionMap.get("viName"))?"":conditionMap.get("viName"); String viTypeLabel=StringUtils.isBlank(conditionMap.get("viType"))?"":conditionMap.get("viType"); 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.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 dataGrid = new DataGrid<>(); try { GetPagePortalVIArrayByPageInfoResult pagePortalVIArrayByPageInfoResult= platformClientUtil.getPortalService().getPagePortalVIArrayByPageInfo(typeName,viName,viType,viTypeFlag,pageIndex,pageSize); if(pagePortalVIArrayByPageInfoResult.total>0) { PortalVI[] portalVIS = pagePortalVIArrayByPageInfoResult.returnValue; List portalVIVOS= portalVIDOO2VOS(Arrays.asList(portalVIS)); dataGrid.setData(portalVIVOS); dataGrid.setTotal(pagePortalVIArrayByPageInfoResult.total); }else{ dataGrid = new DataGrid<>("沒有查询到数据"); } } catch (PLException e) { e.printStackTrace(); dataGrid = new DataGrid<>("沒有表单出现异常:"+e.getMessage()); } return dataGrid; } /*** * 表单/表格添加 * @param portalVIDTO * @return * @throws PLException */ @Override 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=new PortalVIVO(); PortalVI portalVI= platformClientUtil.getPortalService().getPortalVIById(id); portalVIVO=portalVIDOO2VO(portalVI); return portalVIVO; } /*** * 表单/表格更改 * @param portalVIDTO * @return * @throws PLException */ @Override public BaseResult editSave(PortalVIDTO portalVIDTO) throws VciBaseException { return savePortalVIDTO(portalVIDTO,true); } @Override public boolean delete(DeletePortalVIDTOList portalVIDTOList) throws PLException { if(portalVIDTOList==null||CollectionUtils.isEmpty(portalVIDTOList.getPortalVIDTOList())){ VciBaseUtil.alertNotNull("请选择要删除的对象!"); } 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 + "表单已经在表格中被引用,请重新选择要删除的对象!"); } } // 判断该表单或表格是否在UI定义时被引用 formFlag = platformClientUtil.getPortalService().judgeUpdateButton(viType, viewName, typeName); if (formFlag) { throw new Throwable(viewName + "数据已经被UI组件引用,请重新选择要删除的对象!"); } UITools.getService().deletePortalVIByID(id); } }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 idsList= VciBaseUtil.str2List(ids); List PortalVIList= new ArrayList<>(); DeletePortalVIDTOList portalVIDTOList=new DeletePortalVIDTOList(); idsList.stream().forEach(id->{ PortalVI portalVI= null; try { portalVI = platformClientUtil.getPortalService().getPortalVIById(id); PortalVIList.add(portalVI); } catch (PLException e) { e.printStackTrace(); } }); portalVIDTOList.setPortalVIDTOList(portalVIO2DTOS(PortalVIList)); return delete(portalVIDTOList); } /** * 表单/表格克隆 * @param clonePortalVIDTOList * @return * @throws VciBaseException */ @Override public boolean clone(ClonePortalVIDTOList clonePortalVIDTOList) throws VciBaseException { if(clonePortalVIDTOList==null||CollectionUtils.isEmpty(clonePortalVIDTOList.getClonePortalVIDTOList())){ throw new VciBaseException("请选择要克隆的对象!"); } try { for (ClonePortalVIDTO clonedestObject : clonePortalVIDTOList.getClonePortalVIDTOList()) { String viName = clonedestObject.getViName(); PortalVIDTO portalVIDTO = clonedestObject.getOldPortalVIDTO(); String typeName = clonedestObject.getTypeName(); short typeFlag = clonedestObject.getTypeFlag(); if (viName != null) { VciBaseUtil.alertNotNull(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; } UITools.getService().savePortalVI(portalVI); } } }catch (PLException e){ throw new VciBaseException("克隆出现异常:"+e.getMessage()); } return true; } private BaseResult savePortalVIDTO(PortalVIDTO portalVIDTO,boolean isEdit) { boolean _isBtm=false; boolean flag = false; String labelName=PortalVIType.Form.getName(); try { VciBaseUtil.alertNotNull(portalVIDTO.getViName(),"名称不能为空!"); 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); //每页显示校验 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()); for (int i = 0; i < portalVIS.length; i++) { 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); if (flag && (StringUtils.isNotBlank(portalVIDTO.getViName()))&&(!oldPortalVI.viName.equals(portalVIDTO.getViName()))) { throw new Throwable("该"+labelName+"已经被引用,不能修改名称!"); } } catch (PLException e) { throw new Throwable("查询原有表单出现异常:"+e.getMessage()); } if (!portalVI.id.equals(portalVIDTO.getId())) { if (portalVI.viName.equals(portalVIDTO.getViName())) { throw new Throwable("名称已经存在!"); } } } else { portalVIDTO.setId(ObjectUtility.getNewObjectID36()); if (portalVI.viName.equals(portalVIDTO.getViName())) { throw new Throwable("名称已经存在!"); } } } }else{ flag=platformClientUtil.getPortalService().judgeUpdateButton(portalVIDTO.getTypeFlag(), portalVIDTO.getViName(), portalVIDTO.getTypeName()); } 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) { String exceptionMessage = "保存"+labelName+"出现异常:"+ VciBaseUtil.getExceptionMessage(e); logger.error(exceptionMessage); return BaseResult.fail(exceptionMessage); } return BaseResult.success("保存"+labelName+"成功!"); } @Override public Map selectAllPortalVIMap() throws VciBaseException { return null; } /** * 判断每页行数定义是否正确 * @Title :isCorrectPageNums * @Description : * @param pageText * @return */ protected String isCorrectPageNums(String pageText) { if (pageText == null || pageText.trim().equals("")) { return ""; } //edit by guo当每页行数中不止一个选项时,需要填写默认的显示条数,且默认的应该存在于选项中。 if(pageText.indexOf(",")!=-1){ try { String[] pages = pageText.split(","); int index = pageText.indexOf("#"); String subpageText1 = pageText.substring(0, index); String subpageText2 = pageText.substring(index+1); if(subpageText1.contains(subpageText2)){ for (String page : pages) { //if(!page.equalsIgnoreCase("all")){ if(page.contains("#")){ index = page.indexOf("#"); page = page.substring(0, index); } Integer.parseInt(page); //} } } else { return "输入页数不符合规范,请参照文本框提示再重新填写!"; } } catch (Exception e) { return "输入页数不符合规范,请参照文本框提示再重新填写!"; } }else { try { Integer.parseInt(pageText); } catch (Exception e) { return "输入页数不符合规范,请参照文本框提示重新填写!"; } } return ""; } /** * 枚举的数据对象转换为显示对象 * * @param portalVIS 枚举的对象 * @return 显示对象 */ @Override public List portalVIDOO2VOS(Collection portalVIS) { List portalVIVOS = new ArrayList<>(); Optional.ofNullable(portalVIS).orElseGet(()->new ArrayList<>()).stream().forEach(portalVI -> { PortalVIVO portalVIVO = portalVIDOO2VO(portalVI); portalVIVOS.add(portalVIVO); }); return portalVIVOS; } /** * 表单的数据对象转换为显示对象 * @param portalVIDTOS 表单的对象 * @return 显示对象 */ @Override public List portalVIDTOO2VIS(Collection portalVIDTOS) { List portalVIS = new ArrayList<>(); Optional.ofNullable(portalVIDTOS).orElseGet(()->new ArrayList<>()).stream().forEach(portalVIDTO -> { PortalVI portalVI = portalVIDTOO2VI(portalVIDTO); portalVIS.add(portalVI); }); return portalVIS; } /** * 表单的数据对象转换为显示对象 * @param PortalVIS 表单的对象 * @return 显示对象 */ @Override public List portalVIO2DTOS(Collection PortalVIS) { ListPortalVIDTOS = 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(); PRMDO prmdo = prmDOO2VIS(portalVIDTO.getPrm(),viType); try { portalVI.prm=UITools.getPRMText(prmdo); } catch (Throwable e) { 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; } /** * 表单数据对象转换 * @param prmdto * @param viType * @return */ private PRMDO prmDOO2VIS(PRMDTO prmdto, short viType) { PRMDO prmdo=new PRMDO(); prmdo.setShowCols(prmdto.getShowCols()); prmdo.setFormQtName(prmdto.getFormQtName()); prmdo.setPrmItemList(pRMItemDTOO2DOS(prmdto.getPrmItemList(),viType)); 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.setId(portalVI.id); portalVIVO.setTypeFlag(portalVI.typeFlag); portalVIVO.setTypeName(portalVI.typeName); portalVIVO.setViName(portalVI.viName); portalVIVO.setViType(portalVI.viType); 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){ PRMVO prmvo=new PRMVO(); prmvo.setFormQtName(prmdo.getFormQtName()); prmvo.setShowCols(prmdo.getShowCols()); List prmItemDOS= prmdo.getPrmItemList(); prmvo.setPrmItemList(pRMItemDOO2VOS(prmItemDOS,viType)); return prmvo; } public List pRMItemDOO2VOS(Collection prmItemDOS,short viType) { List portalVIVOS = new ArrayList<>(); Optional.ofNullable(prmItemDOS).orElseGet(()->new ArrayList<>()).stream().forEach(prmItemDO -> { PRMItemVO prmItemVO = pRMItemDOO2VO(prmItemDO,viType); portalVIVOS.add(prmItemVO); }); return portalVIVOS; } public List pRMItemDTOO2DOS(Collection prmItemDTOS,short viType) { List portalVIVOS = new ArrayList<>(); Optional.ofNullable(prmItemDTOS).orElseGet(()->new ArrayList<>()).stream().forEach(PRMItemDTO -> { PRMItemDO PRMItemDO = pRMItemDTOO2DO(PRMItemDTO,viType); portalVIVOS.add(PRMItemDO); }); return portalVIVOS; } public List pRMItemDOO2DTOS(Collection prmItemDOS,short viType) { List portalVIVOS = new ArrayList<>(); Optional.ofNullable(prmItemDOS).orElseGet(()->new ArrayList<>()).stream().forEach(prmItemDO -> { PRMItemDTO prmItemDTO = pRMItemDOO2DTO(prmItemDO,viType); portalVIVOS.add(prmItemDTO); }); return portalVIVOS; } /** * 数据对象转换 * @param prmItemDTO 数据对象 * @param viType 表单类型 * @return */ private PRMItemDO pRMItemDTOO2DO(PRMItemDTO prmItemDTO,short viType) { PRMItemDO prmItemDO=new PRMItemDO(); prmItemDO.setItemBat(prmItemDTO.getItemBat()); prmItemDO.setItemCols(prmItemDTO.getItemCols()); prmItemDO.setItemEQ(prmItemDTO.getItemEQ()); prmItemDO.setItemDbl(prmItemDTO.getItemDbl()); prmItemDO.setItemCut(prmItemDTO.getItemCut()); prmItemDO.setItemOR(prmItemDTO.getItemOR()); prmItemDO.setItemAddFilter(prmItemDTO.getItemAddFilter()); prmItemDO.setItemField(prmItemDTO.getItemField()); prmItemDO.setItemImgWH(prmItemDTO.getItemImgWH()); prmItemDO.setItemCtrlDisplyCol(prmItemDTO.getItemCtrlDisplyCol());//控制显示列 prmItemDO.setItemDateFormat(prmItemDTO.getItemDateFormat());// 数据为日期类型时的格式化字符串 如 yyyy-MM-dd HH:mm:ss prmItemDO.setItemInObj(prmItemDTO.getItemInObj()); prmItemDO.setItemName(prmItemDTO.getItemName()); prmItemDO.setItemCustomClass(prmItemDTO.getItemCustomClass());//自定义类路径 prmItemDO.setItemIsHidden(prmItemDTO.getItemIsHidden()); prmItemDO.setItemIsEditable(prmItemDTO.getItemIsEditable()); prmItemDO.setItemIsRequired(prmItemDTO.getItemIsRequired()); prmItemDO.setItemFieldWidth(prmItemDTO.getItemFieldWidth()); prmItemDO.setItemTxf(prmItemDTO.getItemTxf()); prmItemDO.setItemRows(prmItemDTO.getItemRows()); prmItemDO.setItemHrefConf(prmItemDO.getItemHrefConf());//超链接配置 prmItemDO.setItemTips(prmItemDTO.getItemTips()); prmItemDO.setItemTrim(prmItemDTO.getItemTrim()); prmItemDO.setItemDateFormat(prmItemDTO.getItemDateFormat()); prmItemDO.setItemCtrlDisplyCondition(prmItemDTO.getItemCtrlDisplyCondition());////控制显示条件 prmItemDO.setItemEditableProgram(prmItemDTO.getItemEditableProgram()); prmItemDO.setItemEditCondition(prmItemDTO.getItemEditCondition()); prmItemDO.setItemHrefFields(prmItemDTO.getItemHrefFields());//超链接字段 prmItemDO.setItemValueList(prmItemDTO.getItemValueList()); prmItemDO.setItemValue(prmItemDTO.getItemValue()); prmItemDO.setItemStyle(prmItemDTO.getItemStyle()); prmItemDO.setItemShowExpression(prmItemDTO.getItemShowExpression());// 显示表达式 ${aa}-${bb} prmItemDO.setItemSeniorQueryColsCounts(prmItemDTO.getItemSeniorQueryColsCounts());//高级查询各列使用次数 prmItemDO.setItemType(prmItemDTO.getItemType()); prmItemDO.setItemScript(prmItemDTO.getItemScript()); prmItemDO.setItemRight(prmItemDTO.getItemRight()); prmItemDO.setItemQuerySql(prmItemDTO.getItemQuerySql()); prmItemDO.setItemQueryRefFields(prmItemDTO.getItemQueryRefFields());//查询关联列 prmItemDO.setItemQtName(prmItemDTO.getItemQtName());//末班名称 prmItemDO.setItemParentFolderName(prmItemDTO.getItemParentFolderName());//父文件夹名称 prmItemDO.setItemPageSize(prmItemDTO.getItemPageSize()); prmItemDO.setItemOutType(prmItemDTO.getItemOutType()); prmItemDO.setItemOutFields(prmItemDTO.getItemOutFields()); prmItemDO.setItemListVal(prmItemDTO.getItemListVal()); prmItemDO.setItemListTxt(prmItemDTO.getItemListTxt()); prmItemDO.setItemListTable(prmItemDTO.getItemListTable()); prmItemDO.setItemKeyFields(prmItemDTO.getItemKeyFields()); prmItemDO.setItemIsShowFolder(prmItemDTO.getItemIsShowFolder());//是否显示文件夹 prmItemDO.setItemIsNavigatorExpand(prmItemDTO.getItemIsNavigatorExpand());////查询区域显示控制 prmItemDO.setItemIsHttpSave(prmItemDTO.getItemIsHttpSave()); prmItemDO.setItemHttpVolumnPath(prmItemDTO.getItemHttpVolumnPath()); prmItemDO.setItemHttpPathField(prmItemDTO.getItemHttpPathField()); if(viType==PortalVIType.Table.getIntVal()) {//如果是表格 initTableConfigDTOO2DOData(prmItemDO,prmItemDTO); } return prmItemDO; } /** * PRMItemDO 转 PRMItemVO * @param prmItemDO * @param viType * @return */ private PRMItemVO pRMItemDOO2VO(PRMItemDO prmItemDO,short viType) { PRMItemVO prmItemVO=new PRMItemVO(); prmItemVO.setItemBat(prmItemDO.getItemBat()); prmItemVO.setItemCols(prmItemDO.getItemCols()); prmItemVO.setItemEQ(prmItemDO.getItemEQ()); prmItemVO.setItemDbl(prmItemDO.getItemDbl()); prmItemVO.setItemCut(prmItemDO.getItemCut()); prmItemVO.setItemOR(prmItemDO.getItemOR()); prmItemVO.setItemAddFilter(prmItemDO.getItemAddFilter()); prmItemVO.setItemField(prmItemDO.getItemField()); prmItemVO.setItemImgWH(prmItemDO.getItemImgWH()); prmItemVO.setItemCtrlDisplyCol(prmItemDO.getItemCtrlDisplyCol());//控制显示列 prmItemVO.setItemDateFormat(prmItemDO.getItemDateFormat());// 数据为日期类型时的格式化字符串 如 yyyy-MM-dd HH:mm:ss prmItemVO.setItemInObj(prmItemDO.getItemInObj()); prmItemVO.setItemName(prmItemDO.getItemName()); prmItemVO.setItemCustomClass(prmItemDO.getItemCustomClass());//自定义类路径 prmItemVO.setItemIsHidden(prmItemDO.getItemIsHidden()); prmItemVO.setItemIsEditable(prmItemDO.getItemIsEditable()); prmItemVO.setItemIsRequired(prmItemDO.getItemIsRequired()); prmItemVO.setItemFieldWidth(prmItemDO.getItemFieldWidth()); prmItemVO.setItemTxf(prmItemDO.getItemTxf()); prmItemVO.setItemRows(prmItemDO.getItemRows()); prmItemVO.setItemHrefConf(prmItemDO.getItemHrefConf());//超链接配置 prmItemVO.setItemTips(prmItemDO.getItemTips()); prmItemVO.setItemTrim(prmItemDO.getItemTrim()); prmItemVO.setItemDateFormat(prmItemDO.getItemDateFormat()); prmItemVO.setItemCtrlDisplyCondition(prmItemDO.getItemCtrlDisplyCondition());////控制显示条件 prmItemVO.setItemEditableProgram(prmItemDO.getItemEditableProgram()); prmItemVO.setItemEditCondition(prmItemDO.getItemEditCondition()); prmItemVO.setItemHrefFields(prmItemDO.getItemHrefFields());//超链接字段 prmItemVO.setItemValueList(prmItemDO.getItemValueList()); prmItemVO.setItemValue(prmItemDO.getItemValue()); prmItemVO.setItemStyle(prmItemDO.getItemStyle()); prmItemVO.setItemShowExpression(prmItemDO.getItemShowExpression());// 显示表达式 ${aa}-${bb} prmItemVO.setItemSeniorQueryColsCounts(prmItemDO.getItemSeniorQueryColsCounts());//高级查询各列使用次数 prmItemVO.setItemQuerySql(prmItemDO.getItemQuerySql());//高级查询sql prmItemVO.setItemType(prmItemDO.getItemType());//属性基本类型 prmItemVO.setItemTypeText(ItemTypeEnum.getTextByValue(prmItemDO.getItemType()));//属性基本类型显示值 prmItemVO.setItemScript(prmItemDO.getItemScript()); prmItemVO.setItemRight(prmItemDO.getItemRight()); prmItemVO.setItemQueryRefFields(prmItemDO.getItemQueryRefFields());//查询关联列 prmItemVO.setItemQtName(prmItemDO.getItemQtName()); prmItemVO.setItemParentFolderName(prmItemDO.getItemParentFolderName());//父文件夹名称 prmItemVO.setItemPageSize(prmItemDO.getItemPageSize()); prmItemVO.setItemOutType(prmItemDO.getItemOutType()); prmItemVO.setItemOutFields(prmItemDO.getItemOutFields()); prmItemVO.setItemListVal(prmItemDO.getItemListVal());//参照值 prmItemVO.setItemListTxt(prmItemDO.getItemListTxt()); prmItemVO.setItemListTable(prmItemDO.getItemListTable()); prmItemVO.setItemKeyFields(prmItemDO.getItemKeyFields()); prmItemVO.setItemIsShowFolder(prmItemDO.getItemIsShowFolder());//是否显示文件夹 prmItemVO.setItemIsNavigatorExpand(prmItemDO.getItemIsNavigatorExpand());////查询区域显示控制 prmItemVO.setItemIsHttpSave(prmItemDO.getItemIsHttpSave()); prmItemVO.setItemHttpVolumnPath(prmItemDO.getItemHttpVolumnPath()); prmItemVO.setItemHttpPathField(prmItemDO.getItemHttpPathField()); if(viType==PortalVIType.Table.getIntVal()) {//如果是表格 initTableConfigDOO2VOData(prmItemVO,prmItemDO); } 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); } return prmItemDTO; } /** * 初始化表格所用特殊字段配置 * @param prmItemVO * @param prmItemDO */ 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 allKeyList= getRefFormVIName(prmItemDO.getItemInObj()); List itemOutFieldList =VciBaseUtil.str2List(prmItemDO.getItemOutFields()); List itemKeyFieldList =VciBaseUtil.str2List(prmItemDO.getItemKeyFields()); List itemSelectoutFieldList= allKeyList.stream().filter(s ->!itemOutFieldList.stream().map(s1 -> s1).collect(Collectors.toList()).contains(s) ).collect(Collectors.toList()); prmItemVO.setItemSelectoutFieldList(itemSelectoutFieldList);//待选择的属性字段 prmItemVO.setItemOutFieldList(itemOutFieldList);//需要使用的集合 List itemSearchFieldList= itemOutFieldList.stream().filter(s ->!itemKeyFieldList.stream().map(s1 -> s1).collect(Collectors.toList()).contains(s) ).collect(Collectors.toList()); prmItemVO.setItemSearchFieldList(itemSearchFieldList);//待搜索字段 prmItemVO.setItemKeyFieldList(itemKeyFieldList);//搜索字段 } /** * 初始化表格所用特殊字段配置 * @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 allKeyList= getRefFormVIName(prmItemDO.getItemInObj()); List itemOutFieldList =VciBaseUtil.str2List(prmItemDO.getItemOutFields()); List itemKeyFieldList =VciBaseUtil.str2List(prmItemDO.getItemKeyFields()); List 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 itemSearchFieldList= itemOutFieldList.stream().filter(s ->!itemKeyFieldList.stream().map(s1 -> s1).collect(Collectors.toList()).contains(s) ).collect(Collectors.toList()); 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 newItemFieldWidthList=prmItemDTO.getItemFieldWidthList().stream().map(KeyValue::getValue).distinct().collect(Collectors.toList()); prmItemDO.setItemFieldWidth(VciBaseUtil.array2String(newItemFieldWidthList.toArray(new String[]{}),":"));//字段宽度 List itemSeniorQueryBOS= prmItemDTO.getItemSeniorQueryBOS(); List itemSeniorQueryColsList=new ArrayList<>(); List itemSeniorQueryColsCountsList=new ArrayList<>(); List 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); } }); prmItemDO.setItemSeniorQueryCols(VciBaseUtil.array2String(itemSeniorQueryColsList.toArray(new String[]{}))); prmItemDO.setItemSeniorQueryColsCounts(VciBaseUtil.array2String(itemSeniorQueryColsCountsList.toArray(new String[]{}))); prmItemDO.setItemQuerySql(VciBaseUtil.array2String(itemQuerySqlList.toArray(new String[]{}),";")); } /** * 初始化表格列宽度集合 */ private List initItemFieldWidthList(String itemOutFields,String itemFieldWidth){ List keyValueList=new ArrayList<>(); ListitemOutFieldList= VciBaseUtil.str2List(itemOutFields); ListitemFieldWidthList= VciBaseUtil.str2List(itemFieldWidth); if(itemOutFieldList.size()>0) { for (int i = 0; i < itemOutFieldList.size(); i++) { KeyValue keyValue = new KeyValue(); String with = itemFieldWidthList.get(i); keyValue.setKey(itemOutFieldList.get(i)); keyValue.setValue(StringUtils.isBlank(with) ? "250" : with); keyValueList.add(keyValue); } } return keyValueList; } /** * 高级查询配置初始化 * @param itemSeniorQueryCols * @param itemSeniorQueryColsCounts * @param itemQuerySql * @return */ private List initItemSeniorQueryBOData(String itemSeniorQueryCols,String itemSeniorQueryColsCounts,String itemQuerySql){ List itemSeniorQueryBOList=new ArrayList<>(); List itemSeniorQueryColList= VciBaseUtil.str2List(itemSeniorQueryCols); List itemSeniorQueryColsCountList= VciBaseUtil.str2List(itemSeniorQueryColsCounts); List itemQuerySqlList= VciBaseUtil.str2List(itemQuerySql,";"); if (itemSeniorQueryColList!=null&&itemSeniorQueryColList.size()>0){ for (int i=0;i getRefFormVIName(String refFormOid){ List keyList=new ArrayList<>(); try { PortalVI refFormVI = UITools.getService().getPortalVIById(refFormOid); PortalVIVO portalVIVO= portalVIDOO2VO(refFormVI); if(portalVIVO!=null&&portalVIVO.getPrm().getPrmItemList().size()>0){ portalVIVO.getPrm().getPrmItemList().stream().forEach(k->{ keyList.add(k.getItemField()); }); } } catch (PLException e) { // TODO Auto-generated catch block e.printStackTrace(); return keyList; } return keyList; } }