Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/PLIconDTO.java
@@ -2,6 +2,8 @@ import lombok.Data; import java.util.Date; /** * @Description 图标传输对象 * @Author dangsn @@ -38,4 +40,21 @@ * 图标分组 */ private String groups; /** * 创建时间 */ private long plCreateTime ; /** * 创建人 */ private String plCreateUser; /** * 修改时间 */ private long plModifyTime ; /** * 修改人 */ private String plModifyUser; } Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/PLIconVO.java
@@ -43,4 +43,21 @@ * 图标所属库 */ private String lable; /** * 创建时间 */ private long plCreateTime ; /** * 创建人 */ private String plCreateUser; /** * 修改时间 */ private long plModifyTime ; /** * 修改人 */ private String plModifyUser; } Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/SmUserQueryController.java
@@ -290,6 +290,39 @@ } /** * 修改用户头像 * @param file 文件 * @return */ @RequestMapping(value = "/updateUserPhoto",method = RequestMethod.POST) public BaseResult updateUserPhoto(MultipartFile file){ try { return userQueryService.updateUserPhoto(file) ? BaseResult.success("用户头像修改成功!"):BaseResult.fail("用户头像修改失败!"); }catch (Exception e){ e.printStackTrace(); String exceptionMessage = "修改用户头像时出现错误,原因:" + VciBaseUtil.getExceptionMessage(e); logger.error(exceptionMessage); return BaseResult.fail(exceptionMessage); } } /** * 获取用户头像 * @param response * @return */ @RequestMapping(value = "/getUserPhoto",method = RequestMethod.GET) public void getUserPhoto(HttpServletResponse response){ try { ControllerUtil.writeFileToResponse(response,userQueryService.getUserPhoto()); } catch (Exception e) { throw new VciBaseException(e.getMessage(),new String[0],e); } } /** * 删除用户 * @param ids * @return Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/SmUserQueryServiceI.java
@@ -5,6 +5,7 @@ import com.vci.pagemodel.SmUserVO; import com.vci.starter.web.exception.VciBaseException; import com.vci.starter.web.pagemodel.*; import org.springframework.web.multipart.MultipartFile; import java.io.File; import java.util.Collection; @@ -283,4 +284,12 @@ * @return */ String expUser() throws PLException; /** * 修改用户头像 * @param file 文件 * @return */ boolean updateUserPhoto(MultipartFile file) throws PLException; String getUserPhoto() throws PLException; } Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/SmUserQueryServiceImpl.java
@@ -2,21 +2,27 @@ import com.vci.common.util.ThreeDES; import com.vci.common.utility.ObjectUtility; import com.vci.constant.FrameWorkLangCodeConstant; import com.vci.constant.WebLangCodeConstant; import com.vci.corba.common.PLException; import com.vci.corba.common.data.UserEntityInfo; import com.vci.corba.framework.data.*; import com.vci.corba.omd.data.BusinessObject; import com.vci.corba.omd.etm.EnumItem; import com.vci.corba.omd.etm.EnumType; import com.vci.corba.volume.VolumeServicePrx; import com.vci.dto.SmUserDTO; import com.vci.dto.VciFileObjectDTO; import com.vci.enumpck.UI.OrgTypeEnum; import com.vci.enumpck.UI.VciFileTransProtocolEnum; import com.vci.enumpck.UserTypeEnum; import com.vci.lcstatuspck.FileLCStatus; import com.vci.model.SmUserDO; import com.vci.model.VciFileDocClassifyDO; import com.vci.model.VciFileObjectDO; import com.vci.model.VciFileVolumeDO; import com.vci.omd.utils.ObjectTool; import com.vci.pagemodel.OrgDepartmentVO; import com.vci.pagemodel.SmPasswordStrategyVO; import com.vci.pagemodel.SmRoleVO; import com.vci.pagemodel.SmUserVO; import com.vci.pagemodel.*; import com.vci.po.SmUserPO; import com.vci.properties.OsConfig; import com.vci.starter.poi.bo.ReadExcelOption; @@ -24,16 +30,21 @@ import com.vci.starter.poi.bo.WriteExcelOption; import com.vci.starter.poi.constant.ExcelLangCodeConstant; import com.vci.starter.poi.util.ExcelUtil; import com.vci.starter.revision.service.RevisionModelUtil; import com.vci.starter.web.enumpck.BooleanEnum; import com.vci.starter.web.enumpck.DataSecretEnum; import com.vci.starter.web.enumpck.UserSecretEnum; import com.vci.starter.web.exception.VciBaseException; import com.vci.starter.web.pagemodel.*; import com.vci.starter.web.util.*; import com.vci.starter.web.util.Lcm.Func; import com.vci.starter.web.wrapper.VciQueryWrapperForDO; import com.vci.web.dao.VciFileObjectDaoI; import com.vci.web.properties.WebProperties; import com.vci.web.service.*; import com.vci.web.util.PlatformClientUtil; import com.vci.web.util.WebUtil; import org.apache.commons.io.FilenameUtils; import org.apache.commons.lang3.StringUtils; import org.apache.poi.hssf.util.HSSFColor; import org.slf4j.Logger; @@ -42,10 +53,14 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import org.springframework.web.multipart.MultipartFile; import java.io.File; import javax.annotation.Resource; import java.io.*; import java.util.*; import java.util.stream.Collectors; import static com.vci.constant.FrameWorkLangCodeConstant.UPLOAD_FAIL; /** * 用户的查询相关的服务,可以兼容老平台和老的pdm @@ -86,6 +101,24 @@ */ @Autowired private WebPwdStrategyQueryServiceI smPwdStrategyQueryService; /** * 文件的卷服务 */ @Autowired private VciFileVolumeServiceI vciFileVolumeServiceI; /** * 版本和对象操作类 */ @Autowired(required = false) private RevisionModelUtil revisionModelUtil; /** * 配置对象 */ @Autowired private WebProperties webProperties; /** * 使用角色的属性查询用户时 @@ -141,6 +174,18 @@ * 日志 */ private Logger logger = LoggerFactory.getLogger(getClass()); /** * 文件上传业务层 */ @Autowired private VciFileUploadServiceI vciFileUploadServiceI; /** * 文件信息数据层 */ @Resource private VciFileObjectDaoI vciFileObjectMapper; /** * 平台配置 @@ -390,6 +435,7 @@ smUserVO.setLastModifier(userInfo.updateUser); smUserVO.setLastLoginTime(VciDateUtil.long2Date(userInfo.updateTime)); smUserVO.setLastModifyPasswordTime(VciDateUtil.long2Date(userInfo.pwdUpdateTime)); smUserVO.setPhoto(userInfo.photo); return smUserVO; } @@ -1457,6 +1503,7 @@ userInfo.grantor = user.getGrantor() == null ? "" : user.getGrantor(); userInfo.secretGrade = user.getSecretGrade() == null ? 2 : Integer.valueOf(user.getSecretGrade()); userInfo.isDeptLeader = user.getIsDeptLeader() == null ? "0" : user.getIsDeptLeader(); userInfo.photo = user.getPhoto() == null ? "" : user.getPhoto(); return userInfo; } @@ -1776,6 +1823,99 @@ ExcelUtil.writeDataToFile(excelPath, excelOption); return excelPath; } /** * 修改用户头像 * @param file 文件 * @return */ @Override public boolean updateUserPhoto(MultipartFile file) throws PLException { //获取文件仓位置 VciFileVolumeDO vciFileVolumeDO = vciFileVolumeServiceI.getUploadVolume(); String volumeName = vciFileVolumeDO.getName(); VolumeServicePrx volumnCorbaService = platformClientUtil.getVolumeService(volumeName); if(volumnCorbaService == null){ throw new VciBaseException("没有获取到卷服务"); } InputStream in = null; String path = vciFileVolumeDO.getId() + ":/userphoto/" + WebUtil.getSessionInfo().getUserOid() + "." + FilenameUtils.getExtension(file.getOriginalFilename()); UserInfo userInfo = platformClientUtil.getFrameworkService().getUserObjectByoid(WebUtil.getSessionInfo().getUserOid()); if(StringUtils.isNotBlank(userInfo.photo)){ volumnCorbaService.deleteFile(userInfo.photo); } try{ long currentTime = volumnCorbaService.getCurrrentTimeMillions(); in = file.getInputStream(); long fileSize = file.getSize(); int blockSize = webProperties.getBlockLength()*1024; byte[] buffer = new byte[blockSize]; long temp =0L; for(temp = 0L; temp < fileSize - (long)blockSize; temp += (long)blockSize) { in.read(buffer, 0, blockSize); volumnCorbaService.receiveFile(path, buffer, temp, currentTime, fileSize); } int remainSize = (int)(fileSize - temp); buffer = new byte[remainSize]; in.read(buffer, 0, remainSize); volumnCorbaService.receiveFile(path, buffer, temp, currentTime, fileSize); }catch(IOException e){ throw new VciBaseException("读取文件[" + file.getName() + "]出现了错误," + e.getMessage() ,new String[0],e); }catch(Exception e){ throw new VciBaseException("处理上传文件[" + file.getName() + "]出现了错误," + e.getMessage() ,new String[0],e); }finally { if(in!=null){ try { in.close(); } catch (IOException e) { } } } userInfo.photo = path; boolean b = platformClientUtil.getFrameworkService().updateUser(userInfo, new UserEntityInfo(WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId(), null)); if(!b){ return false; } return true; } @Override public String getUserPhoto() throws PLException { //获取文件仓位置 VciFileVolumeDO vciFileVolumeDO = vciFileVolumeServiceI.getUploadVolume(); String volumeName = vciFileVolumeDO.getName(); VolumeServicePrx volumnCorbaService = platformClientUtil.getVolumeService(volumeName); if(volumnCorbaService == null){ throw new VciBaseException("没有获取到卷服务"); } UserInfo userInfo = platformClientUtil.getFrameworkService().getUserObjectByoid(WebUtil.getSessionInfo().getUserOid()); String serverPath = userInfo.photo; String tempFilePath = LocalFileUtil.getDefaultTempFolder() + File.separator+serverPath.substring(serverPath.lastIndexOf("/") + 1); try { FileOutputStream destFileOs = new FileOutputStream(tempFilePath); long blockSize = webProperties.getBlockLength()*1024; if(blockSize> Integer.MAX_VALUE){ blockSize = Integer.MAX_VALUE; } long fileSize = volumnCorbaService.getFileSize(serverPath); long temp = 0; while (fileSize - temp > blockSize) { destFileOs.write(volumnCorbaService.sendFile(serverPath, temp)); temp += blockSize; } destFileOs.write(volumnCorbaService.sendFile(serverPath, temp)); destFileOs.flush(); destFileOs.close(); } catch (FileNotFoundException e) { throw new VciBaseException("要写入的文件没有找到",new String[]{tempFilePath},e); } catch (IOException e) { throw new VciBaseException("写入文件出错" + e.getMessage(),new String[]{tempFilePath},e); } catch (Exception e){ throw new VciBaseException("卷服务传输文件时出现了错误" + e.getMessage(),new String[0],e); } return tempFilePath; } //根据子部门查询所属的父类部门,并拼接成字符串形式,返回 public String getDeptObjectAllByDeptId(DeptInfo obj) throws PLException { String fetchDepName = ""; Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/util/PlatformClientUtil.java
@@ -12,6 +12,7 @@ import com.vci.corba.omd.ltm.LinkTypeServicePrx; import com.vci.corba.omd.qtm.QTDServicePrx; import com.vci.corba.omd.stm.StatePoolServicePrx; import com.vci.corba.omd.tim.TypeIndexServicePrx; import com.vci.corba.omd.vrm.VersionRuleServicePrx; import com.vci.corba.pllog.LogServicePrx; import com.vci.corba.portal.PortalServicePrx; @@ -115,6 +116,14 @@ } /** * 获取类型索引管理服务 * @return 服务的对象 */ public TypeIndexServicePrx getTypeIndexService() throws PLException { return WebServiceProvider.getOMDService().getTypeIndexService(); } /** * 获取生命周期的服务 * @return 生命周期的服务对象 */ Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsBtmServiceImpl.java
@@ -19,6 +19,7 @@ import com.vci.corba.omd.lcm.LifeCycle; import com.vci.corba.omd.ltm.LinkType; import com.vci.corba.omd.stm.StatePool; import com.vci.corba.omd.tim.TypeIndexDef; import com.vci.corba.omd.vrm.VersionRule; import com.vci.dto.OsBtmTypeDTO; import com.vci.model.IndexObject; @@ -1285,29 +1286,18 @@ if (Func.isEmpty(conditionMap)) { return new ArrayList<>(); } List<String> indexNameList = new ArrayList<String>(); QueryTemplate qtl = new QueryTemplate(); List<String> list = new ArrayList<String>(); list.add("*"); qtl.setBtmType("indexobject"); qtl.setClauseList(list); qtl.setId("p"); qtl.setType("btm"); qtl.setRightFlag(false); Condition condition = OQTool.getCondition(conditionMap); qtl.setCondition(condition); //HashMap<String, String> indexmap = new HashMap<String, String>(); BusinessObject findBTMObjects[] = platformClientUtil.getQueryService().findBTMObjects(qtl.getId(), OQTool.qtTOXMl(qtl).asXML()); List<IndexObject> indexObjects = new ArrayList<>(); for (int i = 0; i < findBTMObjects.length; i++) { BusinessObject findBTMObject = findBTMObjects[i]; TypeIndexDef[] typenames = ClientServiceProvider.getOMDService().getTypeIndexService().getBTIndexDefs(conditionMap.get("typename")); for (int i = 0; i < typenames.length; i++) { TypeIndexDef typename = typenames[i]; IndexObject indexObject = new IndexObject(); indexObject.setOid(findBTMObject.oid); indexObject.setDescription(findBTMObject.description); indexObject.setCreateTime(Func.format(new Date(findBTMObject.createTime), DateUtil.PATTERN_DATE)); indexObject.setIndexName(ObjectTool.getBOAttributeValue(findBTMObject, "indexname")); indexObject.setTypeName(ObjectTool.getBOAttributeValue(findBTMObject, "typename")); indexObject.setAttrNames(ObjectTool.getBOAttributeValue(findBTMObject, "attrname")); indexObject.setOid(typename.oid); indexObject.setDescription(typename.description); indexObject.setCreateTime(Func.format(new Date(typename.createTime), DateUtil.PATTERN_DATE)); indexObject.setIndexName(typename.name); indexObject.setTypeName(typename.typeName); indexObject.setAttrNames(typename.attributes); indexObjects.add(indexObject); } return indexObjects; @@ -1323,11 +1313,8 @@ @Override public boolean delIndex(String btmName, String indexName) throws PLException { VciBaseUtil.alertNotNull(btmName, "业务类型名", indexName, "索引名"); Map<String, String> conditionMap = new HashMap<>(); conditionMap.put("typename", btmName); conditionMap.put("indexname", indexName); List<IndexObject> bo2 = getIndexByCondition(conditionMap); if (bo2 != null && bo2.size() > 0) { TypeIndexDef[] typeIndexDef= ClientServiceProvider.getOMDService().getTypeIndexService().getBTIndexDefs(btmName); if( typeIndexDef != null && typeIndexDef.length > 0 ){ String[] indexAttr = {indexName}; boolean alterFlag = platformClientUtil.getBtmService().dropIndex(btmName, indexAttr); @@ -1335,10 +1322,12 @@ if (!alterFlag) { return false; } for (int i = 0; i < bo2.size(); i++) { String oid = bo2.get(i).getOid(); BusinessObject bo = platformClientUtil.getBOFactoryService().readBusinessObject(oid, "indexobject"); platformClientUtil.getBOFactoryService().deleteBusinessObject(bo, 1); for (int i = 0; i < typeIndexDef.length; i++) { if(!typeIndexDef[i].name.equals(indexName)) { continue; } String oid = typeIndexDef[i].oid; ClientServiceProvider.getOMDService().getTypeIndexService().delIndexDef(oid); } } return true; @@ -1356,49 +1345,50 @@ String btmName = indexObjectList.get(0).getTypeName(); String indexNames = indexObjectList.stream().map(IndexObject::getIndexName).collect(Collectors.joining(",")); String[] oldindexAttr = {indexNames}; BusinessObject bo; List<BusinessObject> boList = new ArrayList<>(); //先查询当前添加索引是否已经存在,如果存在就先删除再新增实现替换操作 Map<String, String> conditionMap = new HashMap<>(); conditionMap.put("typename", btmName); //先这样处理,前端现在只做了单次保存,所以不用in conditionMap.put("indexname", indexNames); List<IndexObject> indexObjects = getIndexByCondition(conditionMap); if (indexObjects != null && indexObjects.size() > 0) { //索引不存在时删除就会报错索引不存在,所以这里有索引才去删除 boolean b = platformClientUtil.getBtmService().dropIndex(btmName, oldindexAttr); if (b) { for (int i = 0; i < indexObjects.size(); i++) { String oid = (String) indexObjects.get(i).getOid(); bo = platformClientUtil.getBOFactoryService().readBusinessObject(oid, "indexobject"); platformClientUtil.getBOFactoryService().deleteBusinessObject(bo, 1); } } } // BusinessObject bo; // List<BusinessObject> boList = new ArrayList<>(); // //先查询当前添加索引是否已经存在,如果存在就先删除再新增实现替换操作 // Map<String, String> conditionMap = new HashMap<>(); // conditionMap.put("typename", btmName); // //先这样处理,前端现在只做了单次保存,所以不用in // conditionMap.put("indexname", indexNames); TypeIndexDef[] typeIndexDefs = platformClientUtil.getTypeIndexService().getBTIndexDefs(btmName); for (int i = 0; i < indexObjectList.size(); i++) { IndexObject indexObject = indexObjectList.get(i); //bo = platformClientUtil.getBOFService().initBusinessObject("indexobject"); bo = boService.createCBOByBtmName("indexobject"); List<AttributeValue> attributeValues = new ArrayList<>(); attributeValues.add(new AttributeValue("typename", btmName)); attributeValues.add(new AttributeValue("indexname", indexObject.getIndexName())); attributeValues.add(new AttributeValue("attrname", indexObject.getAttrNames())); bo.newAttrValList = attributeValues.toArray(new AttributeValue[attributeValues.size()]); bo.description = indexObject.getDescription(); String[] indexAttr = {indexObject.getIndexName(), indexObject.getAttrNames()}; //给指定业务类型的指定属性创建索引 boolean alterFlag = platformClientUtil.getBtmService().addIndex(btmName, indexAttr); //索引创建成功之后,需要存储成功索引到索引表中 if (!alterFlag) { return false; if(typeIndexDefs!=null && typeIndexDefs.length>0){ boolean hasIndex = false; for(int i = 0; i < typeIndexDefs.length; i ++){ if(!typeIndexDefs[i].name.equals(indexNames)) { continue; } String oid = typeIndexDefs[i].oid; platformClientUtil.getTypeIndexService().delIndexDef(oid); hasIndex = true; } boList.add(bo); //添加索引信息到索引的业务表中 //platformClientUtil.getBOFactoryService().createBusinessObject(bo,false,false); //索引不存在时删除就会报错索引不存在,所以这里有索引才去删除 if(hasIndex) { platformClientUtil.getBtmService().dropIndex(btmName, oldindexAttr); } } //添加索引信息到索引的业务表中 platformClientUtil.getBOFactoryService().batchCreateBusinessObject(boList.toArray(new BusinessObject[boList.size()]), false, false); StringBuilder sb = new StringBuilder(); List<TypeIndexDef> saveDefs = new ArrayList<>(); for(int i = 0; i < indexObjectList.size(); i ++){ TypeIndexDef saveDef = new TypeIndexDef(); saveDef.typeName = indexObjectList.get(i).getTypeName(); saveDef.name = indexObjectList.get(i).getIndexName(); saveDef.description = indexObjectList.get(i).getDescription(); saveDef.attributes = indexObjectList.get(i).getAttrNames(); sb.append(indexObjectList.get(i).getAttrNames()); if(i<indexObjectList.size()-1){ sb.append(","); } saveDefs.add(saveDef); } String[] indexAttr = {indexObjectList.get(0).getIndexName(),sb.toString()}; boolean alterFlag = platformClientUtil.getBtmService().addIndex(btmName, indexAttr); if(!alterFlag) { return false; } ClientServiceProvider.getOMDService().getTypeIndexService().saveIndexDefs(saveDefs.toArray(new TypeIndexDef[saveDefs.size()])); return true; } Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WebIconServiceImpl.java
@@ -81,6 +81,7 @@ icon.content = iconContent; icon.type = type; icon.groups = groups; icon.plModifyUser = WebUtil.getCurrentUserId(); updateList.add(icon); }else{ PLIcon icon = new PLIcon(); @@ -89,6 +90,7 @@ icon.content = iconContent; icon.type = type; icon.groups = groups; icon.plCreateUser = WebUtil.getCurrentUserId(); addList.add(icon); } } @@ -121,7 +123,8 @@ plIcon.content = iconContent; plIcon.type = iconDTO.getType(); plIcon.groups = iconDTO.getGroups(); plIcon.plCreateUser = WebUtil.getCurrentUserId(); plIcon.plModifyUser = WebUtil.getCurrentUserId(); try { PortalServicePrx portalServicePrx = platformClientUtil.getPortalService(); portalServicePrx.savePLIcon(plIcon); @@ -154,6 +157,9 @@ plIcon.content = iconContent; plIcon.type = iconDTO.getType(); plIcon.groups = iconDTO.getGroups(); plIcon.plCreateUser = iconDTO.getPlCreateUser(); plIcon.plCreateTime = iconDTO.getPlCreateTime(); plIcon.plModifyUser = WebUtil.getCurrentUserId(); portalServicePrx.updatePLIcon(plIcon); } catch (Exception e) { throw new RuntimeException(e); @@ -244,6 +250,10 @@ vo.setContent(icon.content); vo.setType(icon.type); vo.setGroups(icon.groups); vo.setPlCreateTime(icon.plCreateTime); vo.setPlCreateUser(icon.plCreateUser); vo.setPlModifyTime(icon.plModifyTime); vo.setPlModifyUser(icon.plModifyUser); String[] nameArr = icon.name.split(":"); if(nameArr.length > 1){ vo.setLable(nameArr[0]);