From 404966637eda6881a0f17683c5aacc7c1c34aed8 Mon Sep 17 00:00:00 2001
From: 田源 <tianyuan@vci-tech.com>
Date: 星期四, 16 一月 2025 16:18:34 +0800
Subject: [PATCH] 增加操作类型
---
Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/SmUserQueryServiceImpl.java | 291 ++++++++++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 270 insertions(+), 21 deletions(-)
diff --git a/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/SmUserQueryServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/SmUserQueryServiceImpl.java
index 5cca29c..7b8ea7e 100644
--- a/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/SmUserQueryServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/SmUserQueryServiceImpl.java
@@ -2,24 +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.DeptInfo;
-import com.vci.corba.framework.data.RoleInfo;
-import com.vci.corba.framework.data.UserInfo;
-import com.vci.corba.framework.data.UserLogonInfo;
+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;
@@ -27,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;
@@ -45,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
@@ -89,6 +101,24 @@
*/
@Autowired
private WebPwdStrategyQueryServiceI smPwdStrategyQueryService;
+
+ /**
+ * 鏂囦欢鐨勫嵎鏈嶅姟
+ */
+ @Autowired
+ private VciFileVolumeServiceI vciFileVolumeServiceI;
+
+ /**
+ * 鐗堟湰鍜屽璞℃搷浣滅被
+ */
+ @Autowired(required = false)
+ private RevisionModelUtil revisionModelUtil;
+
+ /**
+ * 閰嶇疆瀵硅薄
+ */
+ @Autowired
+ private WebProperties webProperties;
/**
* 浣跨敤瑙掕壊鐨勫睘鎬ф煡璇㈢敤鎴锋椂
@@ -144,6 +174,18 @@
* 鏃ュ織
*/
private Logger logger = LoggerFactory.getLogger(getClass());
+
+ /**
+ * 鏂囦欢涓婁紶涓氬姟灞�
+ */
+ @Autowired
+ private VciFileUploadServiceI vciFileUploadServiceI;
+
+ /**
+ * 鏂囦欢淇℃伅鏁版嵁灞�
+ */
+ @Resource
+ private VciFileObjectDaoI vciFileObjectMapper;
/**
* 骞冲彴閰嶇疆
@@ -393,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;
}
@@ -959,7 +1002,7 @@
tree.setOid(cbo.oid);
tree.setText(cbo.id + " " + cbo.name);
Map<String,String> attributeMap = new HashMap<>();
- WebUtil.copyValueToCboFromMap(cbo,attributeMap);
+ WebUtil.copyValueToMapFromBos(cbo,attributeMap);
tree.setAttributes(attributeMap);
tree.setLeaf(true);
treeList.add(tree);
@@ -1141,19 +1184,21 @@
if(StringUtils.isBlank(md5Password) || StringUtils.isBlank(userName)){
return false;
}
- String sql = " select plpassword from pluser where plusername = :userName";
+ /*String sql = " select plpassword from pluser where plusername = :userName";
Map<String,String> conditionMap = new HashMap<>();
- conditionMap.put("userName",userName.trim());
- List<BusinessObject> BusinessObjectList = boService.queryBySql(sql, conditionMap);
- if(CollectionUtils.isEmpty(BusinessObjectList)){
+ conditionMap.put("userName",userName.trim());*/
+ SmUserVO userVO = this.getUserByUserId(userName);
+ //List<BusinessObject> BusinessObjectList = boService.queryBySql(sql, conditionMap);
+ if(Func.isEmpty(userVO) || Func.isBlank(userVO.getOid())){
return false;
}
- ThreeDES des = new ThreeDES();// 瀹炰緥鍖栦竴涓锟�?
- des.getKey("daliantan0v0");// 鐢熸垚瀵嗗寵
+ //ThreeDES des = new ThreeDES();// 瀹炰緥鍖栦竴涓锟�?
+ //des.getKey("daliantan0v0");// 鐢熸垚瀵嗗寵
//瀵规煡璇㈠嚭鏉ョ殑瀵嗙爜瑙e瘑
- String plpassword = ObjectTool.getNewBOAttributeValue(BusinessObjectList.get(0), "plpassword");
- plpassword = des.getDesString(plpassword);
+ //String plpassword = ObjectTool.getNewBOAttributeValue(BusinessObjectList.get(0), "plpassword");
+ String plpassword = userVO.getPassword();
+ //plpassword = des.getDesString(plpassword);
if(md5Password.equals(plpassword)){
return true;
}
@@ -1456,8 +1501,9 @@
userInfo.updateUser = user.getLastModifier() == null ? "" : user.getLastModifier();
userInfo.pwdUpdateTime = user.getPwdUpdateTime().getTime();
userInfo.grantor = user.getGrantor() == null ? "" : user.getGrantor();
- userInfo.secretGrade = user.getSecretGrade() == null ? 2 : Integer.valueOf(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;
}
@@ -1671,13 +1717,216 @@
* @throws VciBaseException
*/
@Override
- public List<SmUserVO> listUserByUserType() throws PLException {
+ public List<SmUserVO> listUserByUserType(Integer type) throws PLException {
try {
- UserInfo[] userInfo = platformClientUtil.getFrameworkService().fetchUserInfoByType(Short.parseShort(WebUtil.getCurrentUserSessionInfo().getUsertype()));
+ UserInfo[] userInfo = platformClientUtil.getFrameworkService().fetchUserInfoByType(type != null ? type.shortValue() :Short.parseShort(WebUtil.getCurrentUserSessionInfo().getUsertype()));
return userInfoArr2VO(userInfo);
} catch (PLException e) {
throw new VciBaseException("鐧诲綍鏃讹紝鑾峰彇鐢ㄦ埛淇℃伅澶辫触锛�"+e.getMessage());
}
}
+ /**
+ * 瀵煎嚭鐢ㄦ埛鍒楄〃涓夊憳璐﹀彿闄ゅ
+ * @return
+ */
+ @Override
+ public String expUser() throws PLException {
+ // 璁剧疆琛ㄥ崟鍒楀悕
+ List<String> columns = new ArrayList<>(Arrays.asList("濮撳悕, 璐﹀彿, 鐘舵��, 瀵嗙爜绛栫暐, 閿佸畾鐘舵��, 鎵�灞為儴闂�, 涓撲笟, 瑙掕壊, 鐢靛瓙閭欢, 鎻忚堪, 閮ㄩ棬棰嗗, 瀵嗙骇".split(",")));
+ //璁剧疆蹇呭~鍒�
+ ColumnNameisRed.clear();
+ ColumnNameisRed.add(0);
+ ColumnNameisRed.add(1);
+ ColumnNameisRed.add(2);
+ //鍐檈xcel
+ String excelPath = LocalFileUtil.getDefaultTempFolder() + File.separator + "userList.xls";
+ try {
+ new File(excelPath).createNewFile();
+ } catch (Throwable e) {
+ throw new VciBaseException(LangBaseUtil.getErrorMsg(e), new String[]{excelPath}, e);
+ }
+ //璁剧疆鍒�
+ List<WriteExcelData> excelDataList = new ArrayList<>();
+ for (int index = 0; index < columns.size(); index++) {
+ //鍒ゆ柇鏄惁涓哄繀濉垪锛岀粰蹇呭~鍒楄缃鑹�
+ if(ColumnNameisRed.contains(index)){
+ WriteExcelData excelData = new WriteExcelData(0, index, columns.get(index));
+ excelData.setFontColor(String.valueOf(HSSFColor.HSSFColorPredefined.RED.getIndex()));
+ excelDataList.add(excelData);
+ }else{
+ excelDataList.add(new WriteExcelData(0,index, columns.get(index)));
+ }
+ }
+ UserInfo[] userInfos = platformClientUtil.getFrameworkService().fetchUserInfoWithOutSanYuan();
+ //閮ㄩ棬淇℃伅闆嗗悎
+ Hashtable<String, String> deptHashTable = new Hashtable<String, String>();
+ for(int index = 1; index <= userInfos.length; index++){
+ UserInfo userInfo = userInfos[index-1];
+ excelDataList.add(new WriteExcelData(index,0, userInfo.trueName));
+ excelDataList.add(new WriteExcelData(index,1, userInfo.userName));
+ excelDataList.add(new WriteExcelData(index,2, userInfo.status==1 ? "鍋滅敤":"鍚敤"));
+ /**瀵嗙爜绛栫暐**/
+ PasswordStrategyInfo pwsObj = platformClientUtil.getFrameworkService().fetchPasswordStrategyByUserId(userInfo.id);
+ excelDataList.add(new WriteExcelData(index,3, pwsObj.name));
+ /**閿佸畾鐘舵��**/
+ UserLogonInfo lockObj = platformClientUtil.getFrameworkService().fetchUserLogonObj(userInfo.id);
+ if (pwsObj != null)
+ excelDataList.add(new WriteExcelData(index,4, (pwsObj.retryTime > 0 && lockObj.plWrongNum >= pwsObj.retryTime) ? "閿佸畾" : "鏈攣瀹�"));
+ else
+ excelDataList.add(new WriteExcelData(index,4, "鏈攣瀹�"));
+ DeptInfo obj = null;
+ RoleInfo[] roles = null;
+ String deptName = "";
+ obj = platformClientUtil.getFrameworkService().fetchDeptByUserId(userInfo.id);
+ if (obj != null){
+ if(!deptHashTable.containsKey((obj.id))){
+ deptName = getDeptObjectAllByDeptId(obj);
+ deptHashTable.put(obj.id, deptName);
+ }else{
+ deptName = deptHashTable.get(obj.id);
+ }
+ }
+ roles = platformClientUtil.getFrameworkService().fetchRoleInfoByUserId(userInfo.id);
+ excelDataList.add(new WriteExcelData(index,5, deptName));
+ excelDataList.add(new WriteExcelData(index,6, userInfo.specialties));
+ String roleNames = "";
+ if (roles.length != 0){
+ for(int j = 0 ; j < roles.length ; j ++){
+ if (j < roles.length -1){
+ roleNames += roles[j].name + ",";
+ }else {
+ roleNames += roles[j].name;
+ }
+ }
+ }
+ excelDataList.add(new WriteExcelData(index,7, roleNames));
+ excelDataList.add(new WriteExcelData(index,8, userInfo.email));
+ excelDataList.add(new WriteExcelData(index,9, userInfo.desc));
+ excelDataList.add(new WriteExcelData(index,10, userInfo.isDeptLeader.equals("1") ? "鏄�" : "鍚�"));
+ String secretGrade = String.valueOf(userInfo.secretGrade);
+ try {
+ EnumType item = platformClientUtil.getEnumService().getEnumTypeByName(ENUM_USERSECURITYENUM);
+ EnumItem[] children = item.items;
+ String securityShowName = "";
+ for(EnumItem child: children){
+ if(child.value.equals(secretGrade)){
+ securityShowName = child.name;
+ break;
+ }
+ }
+ excelDataList.add(new WriteExcelData(index,11, securityShowName));
+ } catch (PLException e) {
+ e.printStackTrace();
+ }
+ }
+ WriteExcelOption excelOption = new WriteExcelOption(excelDataList);
+ 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 = "";
+ DeptInfo[] depObjectAll = platformClientUtil.getFrameworkService().fetchDepartmentInfosBySonId(obj.id);
+ for(int i=depObjectAll.length-1;i>=0; i--){
+ fetchDepName += depObjectAll[i].name+"/";
+ }
+ if(fetchDepName.length() != 0){
+ fetchDepName = fetchDepName.substring(0, fetchDepName.length() - 1);
+ }
+ return fetchDepName;
+ }
}
--
Gitblit v1.9.3