| | |
| | | package com.vci.web.service.impl; |
| | | |
| | | import com.vci.corba.omd.data.BusinessObject; |
| | | import com.vci.omd.utils.ObjectTool; |
| | | import com.vci.starter.web.util.VciBaseUtil; |
| | | import com.vci.web.pageModel.SmOperationVO; |
| | | import com.vci.pagemodel.SmOperationVO; |
| | | import com.vci.web.service.SmOperationServiceI; |
| | | import com.vci.web.service.WebBoServiceI; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | |
| | | String sql = "select f.ploid from plfunction f where lower(f.plmoduleno) = :functionId"; |
| | | Map<String,String> conditionMap = new HashMap<>(); |
| | | conditionMap.put("functionId",functionId.toLowerCase(Locale.ROOT).trim()); |
| | | List<com.vci.client.bof.ClientBusinessObject> functionCbos = boService.queryBySql(sql, conditionMap); |
| | | List<BusinessObject> functionCbos = boService.queryBySql(sql, conditionMap); |
| | | if(CollectionUtils.isEmpty(functionCbos)){ |
| | | //都没有这个功能 |
| | | return new ArrayList<>(); |
| | | } |
| | | String functionOid = functionCbos.get(0).getAttributeValue("ploid"); |
| | | String functionOid = ObjectTool.getBOAttributeValue(functionCbos.get(0), "ploid"); |
| | | conditionMap.clear(); |
| | | conditionMap.put("functionOid",functionOid); |
| | | sql = "select rf.plrightvalue from PLROLERIGHT rf left join pluserrole ur on rf.plroleoid = ur.plroleuid " + |
| | | " where ur.pluseruid =:useroid and rf.plfuncoid = :functionOid"; |
| | | conditionMap.put("useroid",VciBaseUtil.getCurrentUserOid()); |
| | | List<com.vci.client.bof.ClientBusinessObject> cbos = boService.queryBySql(sql, conditionMap); |
| | | List<BusinessObject> cbos = boService.queryBySql(sql, conditionMap); |
| | | if(CollectionUtils.isEmpty(cbos)){ |
| | | //没有授权 |
| | | return new ArrayList<>(); |
| | | } |
| | | long rightValue = VciBaseUtil.getLong(cbos.get(0).getAttributeValue("plrightvalue")); |
| | | long rightValue = VciBaseUtil.getLong(ObjectTool.getBOAttributeValue(cbos.get(0), "plrightvalue")); |
| | | //获取具体包含哪些按钮 |
| | | sql = "select o.ploperoid,o.plno from PLFUNCOPERATION o where o.plfuncoid = :functionOid "; |
| | | conditionMap.remove("useroid"); |
| | | List<com.vci.client.bof.ClientBusinessObject> operationLinkCbos = boService.queryBySql(sql, conditionMap); |
| | | List<BusinessObject> operationLinkCbos = boService.queryBySql(sql, conditionMap); |
| | | if(CollectionUtils.isEmpty(operationLinkCbos)){ |
| | | //根本没有按钮 |
| | | return new ArrayList<>(); |
| | |
| | | List<String> hasRightOids = new ArrayList<>(); |
| | | Map<String,Integer> oidOrderMap = new HashMap<>(); |
| | | operationLinkCbos.stream().forEach(cbo->{ |
| | | String operationOid = cbo.getAttributeValue("ploperoid"); |
| | | int orderNo = VciBaseUtil.getInt(cbo.getAttributeValue("plno")); |
| | | String operationOid = ObjectTool.getBOAttributeValue(cbo,"ploperoid"); |
| | | int orderNo = VciBaseUtil.getInt(ObjectTool.getBOAttributeValue(cbo,"plno")); |
| | | if(hasRight(rightValue,orderNo)){ |
| | | hasRightOids.add(operationOid); |
| | | oidOrderMap.put(operationOid,orderNo); |
| | |
| | | return new ArrayList<>(); |
| | | } |
| | | sql = "select ploid as oid,plname,pluniqueflag,pldesc,plalias,plsequence from ploperation where ploid in (" + VciBaseUtil.toInSql(hasRightOids.toArray(new String[0])) + ")"; |
| | | List<com.vci.client.bof.ClientBusinessObject> opertionCBOs = boService.queryBySql(sql, new HashMap<>()); |
| | | List<BusinessObject> opertionCBOs = boService.queryBySql(sql, new HashMap<>()); |
| | | List<SmOperationVO> operationVOS = new ArrayList<>(); |
| | | Optional.ofNullable(opertionCBOs).orElseGet(()->new ArrayList<>()).stream().forEach(cbo->{ |
| | | SmOperationVO operationVO = new SmOperationVO(); |
| | | operationVO.setFunctionOid(functionOid); |
| | | operationVO.setOid(cbo.getOid()); |
| | | operationVO.setUniqueFlag(cbo.getAttributeValue("pluniqueflag")); |
| | | operationVO.setName(cbo.getAttributeValue("plname")); |
| | | operationVO.setAlias(cbo.getAttributeValue("plalias")); |
| | | operationVO.setOid(cbo.oid); |
| | | operationVO.setUniqueFlag(ObjectTool.getBOAttributeValue(cbo,"pluniqueflag")); |
| | | operationVO.setName(ObjectTool.getBOAttributeValue(cbo,"plname")); |
| | | operationVO.setAlias(ObjectTool.getBOAttributeValue(cbo,"plalias")); |
| | | operationVO.setOrderNo(String.valueOf(oidOrderMap.get(operationVO.getOid()))); |
| | | operationVO.setDescription(cbo.getAttributeValue("pldesc")); |
| | | operationVO.setDescription(ObjectTool.getBOAttributeValue(cbo,"pldesc")); |
| | | operationVO.setModuleNo(functionId); |
| | | operationVOS.add(operationVO); |
| | | }); |