From 34c25ddf37a3eb8da9efb04efedad089f13efe83 Mon Sep 17 00:00:00 2001 From: ludc Date: 星期三, 24 七月 2024 18:20:27 +0800 Subject: [PATCH] 部门导入调整,按照部门名称/实现层级关系。枚举导入功能接口上传,属性池添加新增、查询、修改、导出、查看应用范围等接口。业务类型、链接类型、枚举类型增加等接口属性是否产生数据检查、根据属性名修改业务类型和连接类型中对应属性方法,以及属性池中需要的一些下拉查询接口。 --- Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmUserQueryServiceImpl.java | 121 +++++++++++++++++++++++++++------------- 1 files changed, 82 insertions(+), 39 deletions(-) diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmUserQueryServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmUserQueryServiceImpl.java index 9930d7f..d08bcbb 100644 --- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmUserQueryServiceImpl.java +++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmUserQueryServiceImpl.java @@ -1,5 +1,6 @@ package com.vci.frameworkcore.compatibility.impl; +import com.vci.dto.SmUserDTO; import com.vci.common.util.ThreeDES; import com.vci.corba.common.PLException; import com.vci.corba.common.data.UserEntityInfo; @@ -9,14 +10,13 @@ import com.vci.frameworkcore.compatibility.SmPwdStrategyQueryServiceI; import com.vci.frameworkcore.compatibility.SmRoleQueryServiceI; import com.vci.frameworkcore.compatibility.SmUserQueryServiceI; -import com.vci.frameworkcore.model.dto.SmUserDTO; -import com.vci.frameworkcore.model.SmUserDO; -import com.vci.frameworkcore.model.po.SmUserPO; -import com.vci.frameworkcore.pagemodel.OrgDepartmentVO; -import com.vci.frameworkcore.pagemodel.SmPasswordStrategyVO; -import com.vci.frameworkcore.pagemodel.SmRoleVO; -import com.vci.frameworkcore.pagemodel.SmUserVO; -import com.vci.frameworkcore.properties.ConfigReader; +import com.vci.model.SmUserDO; +import com.vci.pagemodel.SmUserVO; +import com.vci.po.SmUserPO; +import com.vci.pagemodel.OrgDepartmentVO; +import com.vci.pagemodel.SmPasswordStrategyVO; +import com.vci.pagemodel.SmRoleVO; +import com.vci.frameworkcore.properties.ConfigCorbaReader; import com.vci.omd.utils.ObjectTool; import com.vci.starter.poi.bo.ReadExcelOption; import com.vci.starter.poi.bo.WriteExcelData; @@ -30,7 +30,6 @@ import com.vci.starter.web.util.*; import com.vci.starter.web.wrapper.VciQueryWrapperForDO; import com.vci.web.enumpck.UserTypeEnum; -import com.vci.web.model.WFProcessClassifyDO; import com.vci.web.service.WebBoServiceI; import com.vci.web.util.Func; import com.vci.web.util.PlatformClientUtil; @@ -123,7 +122,7 @@ /** * 鐢ㄦ埛鍒嗛〉鏌ヨ鏃惰幏鍙栭儴闂ㄦ斁鍒拌繖閲岄伩鍏嶉噸澶嶆煡璇� */ - private Map<String,List<OrgDepartmentVO>> orgDepartmentVOMap; + private Map<String,Map<String,String>> orgDepartmentVOMap; /** * 鐢ㄦ埛鍒嗛〉鏌ヨ鏃惰幏鍙栬鑹叉斁鍒拌繖閲岄伩鍏嶉噸澶嶆煡璇� @@ -184,7 +183,7 @@ * @return 鐢ㄦ埛鐨勪俊鎭� * @throws VciBaseException 鏌ヨ鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父 */ - private SmUserVO getUserByField(String queryField,String queryValue) throws VciBaseException{ + private SmUserVO getUserByField(String queryField, String queryValue) throws VciBaseException{ VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(null, SmUserDO.class,null,true); queryWrapper.eq(queryWrapper.getTableNick() + "." +queryField,queryValue); queryWrapper.setDistinct(true); @@ -323,21 +322,19 @@ smUserVO.setPassword(userInfo.pwd); smUserVO.setConfirmPassword(userInfo.pwd); //鐢ㄦ埛鎵�灞為儴闂ㄧ殑鏌ヨ璁剧疆 - List<OrgDepartmentVO> orgDepartmentVOList; + Map<String,String> orgDepartmentVOList; //鏌ョ湅鍏ㄥ眬鍙橀噺涓槸鍚﹀瓨鍦ㄩ儴闂ㄤ俊鎭紝瀛樺湪鐨勬儏鍐垫渶涓昏鏄拡瀵瑰鏉$敤鎴锋煡璇㈢殑鏃跺�欓伩鍏嶉噸澶嶆煡璇㈢殑 if(Func.isNotEmpty(orgDepartmentVOMap)){ - orgDepartmentVOList = orgDepartmentVOMap.get(userInfo.id); + orgDepartmentVOList = Func.isNotEmpty(orgDepartmentVOMap.get(userInfo.id)) ? + orgDepartmentVOMap.get(userInfo.id):new HashMap<>(); }else { - orgDepartmentVOList = orgDeptQueryService.listDeptByUserOid(userInfo.id,null); + Map<String, Map<String, String>> tempDeptMap = orgDeptQueryService.batchMapDeptNameByUserOids(Arrays.asList(userInfo.id), null); + orgDepartmentVOList = Func.isNotEmpty(tempDeptMap.get(userInfo.id)) ? + tempDeptMap.get(userInfo.id):new HashMap<>(); } - smUserVO.setPkDepartment( - Func.isEmpty(orgDepartmentVOList) ? - null:orgDepartmentVOList.stream().map(OrgDepartmentVO::getOid).collect(Collectors.joining(",")) - ); - smUserVO.setPkDepartmentName( - Func.isEmpty(orgDepartmentVOList) ? - null:orgDepartmentVOList.stream().map(OrgDepartmentVO::getName).collect(Collectors.joining(",")) - ); + //閮ㄩ棬oid锛屾甯告儏鍐典笅涓�涓敤鎴峰彧浼氬瓨鍦ㄤ竴涓儴闂ㄤ笅 + smUserVO.setPkDepartment(orgDepartmentVOList.keySet().stream().collect(Collectors.joining(","))); + smUserVO.setPkDepartmentName(orgDepartmentVOList.values().stream().collect(Collectors.joining(","))); //瀵嗙爜绛栫暐鏌ヨ璁剧疆 SmPasswordStrategyVO smPasswordStrategyVO; if(Func.isNotEmpty(smPwdStrategyVOMap)){ @@ -536,7 +533,7 @@ DataGrid<SmUserVO> dataGrid = new DataGrid<>(); if(Func.isNotEmpty(userInfos)){ List<String> idList = Arrays.stream(userInfos).map(item -> item.id).collect(Collectors.toList()); - orgDepartmentVOMap = orgDeptQueryService.batchListDeptByUserOids(idList, null); + orgDepartmentVOMap = orgDeptQueryService.batchMapDeptNameByUserOids(idList, null); smRoleVOMap = smRoleQueryService.batchListRoleByUserOids(idList,null); smPwdStrategyVOMap = smPwdStrategyQueryService.batchSmPwdStrategyByUserOids(idList); dataGrid.setData(userInfoArr2VO(userInfos)); @@ -607,10 +604,27 @@ @Override public List<SmUserVO> countSmUserByDeptOid(String deptOid, Map<String, String> queryMap) throws VciBaseException { //鏄惁鏌ヨ瀛愰儴闂ㄤ笅鍏宠仈鐨勭敤鎴� - List<OrgDepartmentVO> orgDepartmentVOList = orgDeptQueryService.listChildrenDeptByParentOid(deptOid, null); + List<OrgDepartmentVO> orgDepartmentVOList = orgDeptQueryService.listAllLevelChildrenDeptByParentOid(deptOid, null); List<String> deptOidCollection = orgDepartmentVOList.stream().map(OrgDepartmentVO::getOid).collect(Collectors.toList()); deptOidCollection.add(deptOid);//灏嗗綋鍓嶅眰鐨刼id涔熸斁杩涘幓 - return listUserVOByDeptOid(queryMap,deptOidCollection,false); + List<SmUserVO> smUserVOList = listUserVOByDeptOid(queryMap, deptOidCollection, false); + if(Func.isEmpty(smUserVOList)){ + return new ArrayList<>(); + } + Map<String, List<SmRoleVO>> smRoleVOMap = smRoleQueryService.batchListRoleByUserOids(smUserVOList.stream().map(SmUserVO::getOid).collect(Collectors.toSet()), null); + smUserVOList = smUserVOList.stream().map(vo->{ + List<SmRoleVO> smRoleVOS = smRoleVOMap.get(vo.getOid()); + vo.setPkPerson( + Func.isEmpty(smRoleVOS) ? + null:smRoleVOS.stream().map(SmRoleVO::getOid).collect(Collectors.joining(",")) + ); + vo.setPkPersonName( + Func.isEmpty(smRoleVOS) ? + null:smRoleVOS.stream().map(SmRoleVO::getName).collect(Collectors.joining(",")) + ); + return vo; + }).collect(Collectors.toList()); + return smUserVOList; } /** @@ -672,6 +686,7 @@ queryWrapperForDO.setLinkTableSql(" left join pluserdept up on " + queryWrapperForDO.getTableNick() + ".pluid = up.pluseruid" + " left join pldept pkDepartment on up.pldeptuid = pkDepartment.pluid " + " left join PLUSERPASSWORDSTRATEGY pkUserPassword on " +queryWrapperForDO.getTableNick() + ".pluid = pkUserPassword.pluseruid "); + queryWrapperForDO.setOrderSql("order by " + queryWrapperForDO.getTableNick() + ".pltrueName"); List<SmUserDO> smUserDOList = new ArrayList<>(); //userOidList涓虹┖鏃剁殑涓ょ鎯呭喌 if(Func.isEmpty(userOidList)){ @@ -1006,23 +1021,52 @@ /** * 淇敼瀵嗙爜 * @param userOid 鐢ㄦ埛涓婚敭 + * @param oldPassword 鏃х殑瀵嗙爜 * @param password 鏂扮殑瀵嗙爜 * @param confirmPassword 纭瀵嗙爜 */ @Override @Transactional(rollbackFor = Exception.class) - public void changePassword(String userOid, String password, - String confirmPassword) throws VciBaseException { - WebUtil.alertNotNull(userOid,"鐢ㄦ埛涓婚敭",password,"瀵嗙爜",confirmPassword,"纭瀵嗙爜"); + public boolean changePassword(String userOid,String oldPassword, String password, + String confirmPassword) throws Exception { + WebUtil.alertNotNull(userOid,"鐢ㄦ埛涓婚敭",oldPassword,"鐧诲綍瀵嗙爜",password,"瀵嗙爜",confirmPassword,"纭瀵嗙爜"); if(!password.equals(confirmPassword)){ throw new VciBaseException("瀵嗙爜鍜岀‘璁ゅ瘑鐮佷笉鐩哥瓑"); } + //瀵规棫瀵嗙爜鍜屽瘑鐮佽繘琛岃В瀵嗭紝渚夸簬姣斿瀵嗙爜鐢� + oldPassword = Func.decryptAes(oldPassword,"daliantan0v0vcip"); + password = Func.decryptAes(password,"daliantan0v0vcip"); + //瀵规瘮鏃у瘑鐮� + boolean b = this.checkPasswordEqual(oldPassword, userOid); + if(!b){ + throw new PLException("500", new String[] { "鎮ㄨ緭鍏ョ殑瀵嗙爜涓庣櫥褰曞瘑鐮佷笉涓�鑷�,璇烽噸鏂拌緭鍏�!"}); + } + SmUserVO smUserVO = getUserByUserOid(userOid); + if(Func.isEmpty(smUserVO)){ + throw new VciBaseException("褰撳墠淇敼鐨勭敤鎴蜂笉瀛樺湪锛�"); + } + //TODO:鏍¢獙瀵嗙爜鏄惁绗﹀悎绛栫暐 + String error = platformClientUtil.getFrameworkService().checkPasswordStrategyByUserId(smUserVO.getId(), password,null); + if (!StringUtils.isBlank(error)) { + throw new VciBaseException("褰撳墠璁剧疆鐨勫瘑鐮侊紝瀵嗙爜绛栫暐鏍¢獙鏈�氳繃!"); + } + + //TODO:鑰冭檻鏄惁闇�瑕佸皢淇敼鏂瑰紡鏀规垚鐩存帴璋冪敤骞冲彴鐨勬帴鍙o紝鍥犱负鐜板湪鐨勪慨鏀规柟寮忔病鑳芥纭殑鏇存柊缂撳瓨 + /*UserInfo userInfo = new UserInfo(); + userInfo.id = userOid.trim(); + userInfo.pwd = password; + userInfo.pwdUpdateTime = System.currentTimeMillis(); + boolean updateBoolean = platformClientUtil.getFrameworkService().updateUser(userInfo, new UserEntityInfo(WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId(), null)); + return updateBoolean;*/ + ThreeDES des = new ThreeDES();// 瀹炰緥鍖栦竴涓锟�? des.getKey("daliantan0v0");// 鐢熸垚瀵嗗寵 String encPassword = des.getEncString(password); - String sql = "update pluser set plpassword = '" + encPassword + "' where pluid = '" + userOid.trim() + "'"; + //淇敼瀵嗙爜鐨勫悓鏃堕渶瑕佸皢瀵嗙爜淇敼鏃堕棿涔熸洿鏂� + String sql = "update pluser set plpassword = '" + encPassword + "', plpwdupdatetime = TO_DATE('" + + Func.format(new Date(),"yyyy-MM-dd HH:mm:ss") +"','yyyy-MM-dd hh24:mi:ss') where pluid = '" + userOid.trim() + "'"; try { - platformClientUtil.getBOFactoryService().executeUpdateSql(sql); + return platformClientUtil.getBOFactoryService().executeUpdateSql(sql); } catch (PLException vciError) { throw WebUtil.getVciBaseException(vciError); } @@ -1198,10 +1242,8 @@ } //鏍规嵁褰撳墠鍒涘缓杩欎釜鐢ㄦ埛鐨勪汉鎵�缁戝畾瀵嗙爜绛栫暐鏉ヨ繘琛屽瘑鐮佹牎楠� try { - //TODO:涓轰簡鏂逛究璋冭瘯锛屾墍浠ヨ繖鍎垮厛娉ㄩ噴鍐欐鍚庨潰璁板緱鏇存敼 - String userName = WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId(); - //String userName = "developer"; - String error = platformClientUtil.getFrameworkService().checkPasswordStrategyByUserId(userName, smUserDTO.getPassword(),null); + String userId = WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId(); + String error = platformClientUtil.getFrameworkService().checkPasswordStrategyByUserId(userId, smUserDTO.getPassword(),null); if (!StringUtils.isBlank(error)) { throw new VciBaseException("褰撳墠璁剧疆鐨勫瘑鐮侊紝瀵嗙爜绛栫暐鏍¢獙鏈�氳繃"); } @@ -1280,7 +1322,7 @@ // 璁剧疆琛ㄥ崟鍒楀悕 List<String> columns = new ArrayList<>(Arrays.asList("璐﹀彿", "瀵嗙爜", "濮撳悕", "鐢靛瓙閭", "涓撲笟", "鎻忚堪", "閮ㄩ棬(涓婁笅绾ч儴闂ㄤ箣闂翠互鍙嶆枩鏉犻殧寮�(/))")); //鑾峰彇鏄惁瀵煎嚭瀵嗙骇閰嶇疆椤� - String flag = ConfigReader.getConfigValue("exportSecretGrade"); + String flag = ConfigCorbaReader.getConfigValue("exportSecretGrade"); if (flag != null && flag.equalsIgnoreCase("true")) { columns = new ArrayList<>(Arrays.asList("璐﹀彿", "瀵嗙爜", "濮撳悕", "鐢靛瓙閭", "涓撲笟", "鎻忚堪", "閮ㄩ棬(涓婁笅绾ч儴闂ㄤ箣闂翠互鍙嶆枩鏉犻殧寮�(/))" ,"瀵嗙骇")); } @@ -1320,7 +1362,7 @@ * @throws VciBaseException */ @Override - public BaseResult importUser(File file) throws VciBaseException { + public BaseResult importUser(File file) throws Exception { VciBaseUtil.alertNotNull(file,"excel鏂囦欢"); if(!file.exists()){ throw new VciBaseException("瀵煎叆鐨別xcel鏂囦欢涓嶅瓨鍦�,{0}",new String[]{file.getPath()}); @@ -1330,10 +1372,9 @@ ReadExcelOption excelOption = new ReadExcelOption(); //褰撳墠鐧诲綍鐨勭敤鎴疯处鍙� String loginUserId = WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId(); - //String loginUserId = "developer"; UserEntityInfo userEntityInfo = new UserEntityInfo(loginUserId,null); //鏄惁瀵煎叆瀵嗙骇閰嶇疆 - boolean exportSecretGrade = Boolean.parseBoolean(ConfigReader.getConfigValue("exportSecretGrade")); + boolean exportSecretGrade = Boolean.parseBoolean(ConfigCorbaReader.getConfigValue("exportSecretGrade")); List<SmUserPO> poList = ExcelUtil.readDataObjectFromExcel(file, SmUserPO.class,excelOption,(value, po, fieldName)->{ Integer secretValue = UserSecretEnum.getSecretValueByText(po.getSecretGradeText()); //鏄惁蹇呴』瀵煎叆瀵嗙骇 @@ -1357,7 +1398,9 @@ //褰撳墠excel涓槸鍚﹂噸澶嶇敤鐨勫垽閲峂ap:锛坘ey锛氳处鍙凤紝value锛氳鍙凤級 Map<String, String> excelReapeat = new HashMap<>(); //鍏堣幏鍙栧叏閮ㄩ儴闂ㄥ悕绉扮殑鐖跺瓙瀵瑰簲鍏崇郴锛歬ey涓洪儴闂ㄥ瓙鐖剁骇鍚嶇О璺緞锛寁alue涓洪儴闂ㄤ俊鎭� - Map<String,OrgDepartmentVO> deptVOMap = orgDeptQueryService.getDeptAllTreeMap(); + List<OrgDepartmentVO> orgDepartmentVOList = orgDeptQueryService.getDeptAllFullName(); + Map<String, OrgDepartmentVO> deptVOMap = orgDepartmentVOList.stream().collect(Collectors.toMap(OrgDepartmentVO::getFullDeptNamePath, s->s)); + //Map<String,OrgDepartmentVO> deptVOMap = orgDeptQueryService.getDeptAllTreeMap(); //鍒ゆ柇蹇呭~灞炴�ф槸鍚︿负绌猴紝鐢ㄦ埛鏄惁宸插瓨鍦紝浠ュ強閮ㄩ棬鏄惁濉敊绛夋牎楠岄�昏緫 List<String> finalRepeatUserId = repeatUserId; poList.stream().forEach(smUserPO -> { -- Gitblit v1.9.3