From 60f5341a0b30529975f9297b8c735f92c2afc970 Mon Sep 17 00:00:00 2001 From: 2369059705@qq.com <2369059705@qq.com> Date: 星期五, 26 五月 2023 11:03:04 +0800 Subject: [PATCH] 文档权限问题 --- src/main/java/com/product/file/service/DocumentService.java | 790 +++++++++++++++++++++++++++---------------------------- 1 files changed, 388 insertions(+), 402 deletions(-) diff --git a/src/main/java/com/product/file/service/DocumentService.java b/src/main/java/com/product/file/service/DocumentService.java index 2de5ac5..b4032a7 100644 --- a/src/main/java/com/product/file/service/DocumentService.java +++ b/src/main/java/com/product/file/service/DocumentService.java @@ -17,6 +17,7 @@ import com.product.file.config.CmnConst; import com.product.file.service.ide.IDocumentService; import com.product.module.sys.entity.SystemUser; +import com.product.org.admin.service.OrganizationServiceV2; import com.product.util.BaseUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -36,428 +37,413 @@ @Component public class DocumentService extends AbstractBaseService implements IDocumentService { - @Autowired - public BaseDao baseDao; + @Autowired + public BaseDao baseDao; - @Autowired - public DocumentService documentService; + @Autowired + public DocumentService documentService; - @Autowired - QueryFilterService queryFilterService; + @Autowired + QueryFilterService queryFilterService; - @Autowired - DocumentDirectoryService documentDirectoryService; + @Autowired + DocumentDirectoryService documentDirectoryService; + @Autowired + OrganizationServiceV2 organizationServiceV2; - @Override - @Transactional - public String addDocument(FieldSetEntity fieldSetEntity) throws BaseException { - //鏂囦欢闄勪欢琛╱uid - String uuIds = fieldSetEntity.getString(CmnConst.ATTACHMENTS_UUID); - String directory_uuid = fieldSetEntity.getString(CmnConst.DIRECTORY_UUID); - String[] uuid = uuIds.split(","); - //鑾峰彇闄勪欢淇℃伅 - DataTableEntity attachments = baseDao.listTable(CmnConst.PRODUCT_SYS_ATTACHMENTS,BaseUtil.buildQuestionMarkFilter(CmnConst.UUID,uuid.length,true),uuid); - List<String> uuidList = ListUtils.newArrayList(); - List<String> fileNameList = ListUtils.newArrayList(); - for (int i = 0,length=attachments.getRows(); i < length; i++) { - FieldSetEntity fieldSet = new FieldSetEntity(); - fieldSet.setTableName(CmnConst.product_oa_DOCUMENT); - FieldSetEntity fse = attachments.getFieldSetEntity(i); - //鏂囦欢鐩綍uuid - fieldSet.setValue(CmnConst.DIRECTORY_UUID,directory_uuid); - //鏂囦欢澶у皬 - fieldSet.setValue(CmnConst.FILE_SIZE,fse.getString(CmnConst.ATTACHMENT_SIZE)); - //鏂囦欢鍚嶇О - String file_name = fse.getString(CmnConst.FILE_NAME); - fieldSet.setValue(CmnConst.FILE_NAME,file_name); - //鏂囦欢绫诲瀷 - String file_type = file_name.substring(file_name.lastIndexOf(".")+1); - fieldSet.setValue(CmnConst.FILE_TYPE, file_type); - //闄勪欢uuid - fieldSet.setValue(CmnConst.ATTACHMENTS_UUID, fse.getString(CmnConst.UUID)); - fieldSet.setValue(CmnConst.CREATED_BY, SpringMVCContextHolder.getCurrentUser().getUser_id());// 鍒涘缓浜� - fieldSet.setValue(CmnConst.CREATED_UTC_DATETIME, DateUtils.getDateTime());// 鍒涘缓鏃堕棿 - String file_uuid = baseDao.add(fieldSet); - uuidList.add(file_uuid); - fileNameList.add(file_name); + @Override + @Transactional + public String addDocument(FieldSetEntity fieldSetEntity) throws BaseException { + //鏂囦欢闄勪欢琛╱uid + String uuIds = fieldSetEntity.getString(CmnConst.ATTACHMENTS_UUID); + String directory_uuid = fieldSetEntity.getString(CmnConst.DIRECTORY_UUID); + String[] uuid = uuIds.split(","); + //鑾峰彇闄勪欢淇℃伅 + DataTableEntity attachments = baseDao.listTable(CmnConst.PRODUCT_SYS_ATTACHMENTS, BaseUtil.buildQuestionMarkFilter(CmnConst.UUID, uuid.length, true), uuid); + List<String> uuidList = ListUtils.newArrayList(); + List<String> fileNameList = ListUtils.newArrayList(); + for (int i = 0, length = attachments.getRows(); i < length; i++) { + FieldSetEntity fieldSet = new FieldSetEntity(); + fieldSet.setTableName(CmnConst.product_oa_DOCUMENT); + FieldSetEntity fse = attachments.getFieldSetEntity(i); + //鏂囦欢鐩綍uuid + fieldSet.setValue(CmnConst.DIRECTORY_UUID, directory_uuid); + //鏂囦欢澶у皬 + fieldSet.setValue(CmnConst.FILE_SIZE, fse.getString(CmnConst.ATTACHMENT_SIZE)); + //鏂囦欢鍚嶇О + String file_name = fse.getString(CmnConst.FILE_NAME); + fieldSet.setValue(CmnConst.FILE_NAME, file_name); + //鏂囦欢绫诲瀷 + String file_type = file_name.substring(file_name.lastIndexOf(".") + 1); + fieldSet.setValue(CmnConst.FILE_TYPE, file_type); + //闄勪欢uuid + fieldSet.setValue(CmnConst.ATTACHMENTS_UUID, fse.getString(CmnConst.UUID)); + fieldSet.setValue(CmnConst.CREATED_BY, SpringMVCContextHolder.getCurrentUser().getUser_id());// 鍒涘缓浜� + fieldSet.setValue(CmnConst.CREATED_UTC_DATETIME, DateUtils.getDateTime());// 鍒涘缓鏃堕棿 + String file_uuid = baseDao.add(fieldSet); + uuidList.add(file_uuid); + fileNameList.add(file_name); + } + this.documentation(uuidList.toArray(), "鏂板", fileNameList.toArray(), null); + return uuidList.toString(); } - this.documentation(uuidList.toArray(), "鏂板", fileNameList.toArray(),null); - return uuidList.toString(); - } - @Override - @Transactional - public boolean upDocumentName(FieldSetEntity fieldSetEntity) throws BaseException { - String uuid = fieldSetEntity.getString(CmnConst.UUID); - String file_name = fieldSetEntity.getString(CmnConst.FILE_NAME); - fieldSetEntity.setValue(CmnConst.UPDATED_BY, SpringMVCContextHolder.getCurrentUser().getUser_id());// 淇敼浜� - fieldSetEntity.setValue(CmnConst.UPDATED_UTC_DATETIME, DateUtils.getDateTime());// 淇敼鏃堕棿 - FieldSetEntity fie= baseDao.getFieldSetEntity(CmnConst.product_oa_DOCUMENT,uuid,false); - String name = fie.getString(CmnConst.FILE_NAME); - //姣忔淇敼閮戒翰绌哄凡璇讳汉鍛� - fieldSetEntity.setValue(CmnConst.READ_NUM,""); - boolean flag = baseDao.update(fieldSetEntity); - this.documentRepeatOrder(new Object[]{uuid}, "閲嶅懡鍚�",new Object[]{name},new Object[]{file_name}); - return flag; - } - - /** - * 闇�瑕佹壒閲忓垹闄� - * @param fieldSetEntity - * @return - * @throws BaseException - */ - @Override - @Transactional - public boolean delDocument(FieldSetEntity fieldSetEntity) throws BaseException { - String uuids = fieldSetEntity.getString(CmnConst.UUID); - String file_names = fieldSetEntity.getString(CmnConst.FILE_NAME); - String[] file_name = file_names.split(","); - String[] uuid = uuids.split(","); - boolean flag = baseDao.delete(CmnConst.product_oa_DOCUMENT,uuid); - this.documentation(uuid, "鍒犻櫎", file_name,null); - return flag; - } - - @Override - public DataTableEntity documentAll(FieldSetEntity fieldSetEntity) throws BaseException { - //鏂囨。鐩綍uuid - String directory_uuid = fieldSetEntity.getString(CmnConst.DIRECTORY_UUID); - String queryFilter = queryFilterService.getQueryFilter(fieldSetEntity); - if(!BaseUtil.strIsNull(queryFilter)){ - queryFilter = " AND " + queryFilter; + @Override + @Transactional + public boolean upDocumentName(FieldSetEntity fieldSetEntity) throws BaseException { + String uuid = fieldSetEntity.getString(CmnConst.UUID); + String file_name = fieldSetEntity.getString(CmnConst.FILE_NAME); + fieldSetEntity.setValue(CmnConst.UPDATED_BY, SpringMVCContextHolder.getCurrentUser().getUser_id());// 淇敼浜� + fieldSetEntity.setValue(CmnConst.UPDATED_UTC_DATETIME, DateUtils.getDateTime());// 淇敼鏃堕棿 + FieldSetEntity fie = baseDao.getFieldSetEntity(CmnConst.product_oa_DOCUMENT, uuid, false); + String name = fie.getString(CmnConst.FILE_NAME); + //姣忔淇敼閮戒翰绌哄凡璇讳汉鍛� + fieldSetEntity.setValue(CmnConst.READ_NUM, ""); + boolean flag = baseDao.update(fieldSetEntity); + this.documentRepeatOrder(new Object[]{uuid}, "閲嶅懡鍚�", new Object[]{name}, new Object[]{file_name}); + return flag; } - StringBuffer sql = new StringBuffer(); - sql.append(" SELECT ") - .append(" a.*,CONCAT(CONVERT(a.file_size / 1024, decimal(10,2)), 'KB') file_size_kb,b.show_name name") - // .append(" concat(c.attachment_domain,'/',c.attachment_container,'/',c.module_uuid,'/',c.attachment_title,?) path ") - .append(" FROM ") - .append(" (SELECT * FROM product_oa_document WHERE directory_uuid = ? ") - .append(queryFilter) - .append(" ) a LEFT JOIN product_sys_staffs b ON a.created_by = b.user_id ") - .append(" LEFT JOIN product_sys_attachments c ON b.staff_avatar=c.uuid "); - String sostoken = Global.getSystemConfig("upload.key", ""); - DataTableEntity documentData = baseDao.listTable(sql.toString(), new String[]{directory_uuid},fieldSetEntity.getInteger(CmnConst.PAGESIZE), fieldSetEntity.getInteger(CmnConst.CPAGE)); - baseDao.listInternationDataTable(documentData, null); - return documentData; - } - @Override - public FieldSetEntity documentInfo(FieldSetEntity fieldSetEntity) throws BaseException { - String uuid = fieldSetEntity.getString(CmnConst.UUID); - FieldSetEntity fieldSet = baseDao.getFieldSetEntity(CmnConst.product_oa_DOCUMENT, uuid, true); - String file_name = fieldSet.getString(CmnConst.FILE_NAME); - String user_ids = fieldSetEntity.getString(CmnConst.USER_IDS); - String read = fieldSetEntity.getString(CmnConst.READ_NUM); - if(!BaseUtil.strIsNull(user_ids)){ - fieldSetEntity.setValue(CmnConst.REQUIRED_NUMBER,user_ids.split(",").length); - fieldSetEntity.setValue(CmnConst.READ_NUM,read.split(",").length); + /** + * 闇�瑕佹壒閲忓垹闄� + * + * @param fieldSetEntity + * @return + * @throws BaseException + */ + @Override + @Transactional + public boolean delDocument(FieldSetEntity fieldSetEntity) throws BaseException { + String uuids = fieldSetEntity.getString(CmnConst.UUID); + String file_names = fieldSetEntity.getString(CmnConst.FILE_NAME); + String[] file_name = file_names.split(","); + String[] uuid = uuids.split(","); + boolean flag = baseDao.delete(CmnConst.product_oa_DOCUMENT, uuid); + this.documentation(uuid, "鍒犻櫎", file_name, null); + return flag; } - this.documentation(new Object[]{uuid}, "鏌ョ湅", new Object[]{file_name},null); - return fieldSet; - } - @Override - public void documentation(Object[] uuid, String opetype, Object[] file_name,String file_directory) throws BaseException { - //鑾峰彇鏂囦欢淇℃伅瀛樺叆鏃ュ織琛� - SystemUser user = SpringMVCContextHolder.getCurrentUser(); - DataTableEntity dataTableEntity = new DataTableEntity(); - FieldMetaEntity fieldMeta = new FieldMetaEntity(); - fieldMeta.setTableName(new String[]{CmnConst.product_oa_DOCUMENT_LOG}); - dataTableEntity.setMeta(fieldMeta); - for (int i = 0; i < uuid.length; i++) { - FieldSetEntity fieldSetEntity = new FieldSetEntity(); - fieldSetEntity.setTableName(CmnConst.product_oa_DOCUMENT_LOG); - fieldSetEntity.setMeta(fieldMeta); - fieldSetEntity.setValue(CmnConst.DOCUMENT_UUID,uuid[i]); - //fieldSetEntity.setValue(CmnConst.RECORD,record); - fieldSetEntity.setValue(CmnConst.OPETYPE,opetype); - fieldSetEntity.setValue(CmnConst.OPE_DOCUMENT,file_name[i]); - StringBuffer state = new StringBuffer(); - state.append(opetype) - .append("浜哰") - .append(file_name[i]) - .append("]"); - if(!BaseUtil.strIsNull(file_directory)){ - state.append("鍒�").append(file_directory).append("鐩綍涓�"); - } - fieldSetEntity.setValue(CmnConst.STATE,state.toString()); //璇存槑 - fieldSetEntity.setValue(CmnConst.CREATED_BY, user.getUser_id());// 鍒涘缓浜� - fieldSetEntity.setValue(CmnConst.CREATED_UTC_DATETIME, DateUtils.getDateTime());// 鍒涘缓鏃堕棿 - dataTableEntity.addFieldSetEntity(fieldSetEntity); + @Override + public DataTableEntity documentAll(FieldSetEntity fieldSetEntity) throws BaseException { + //鏂囨。鐩綍uuid + String directory_uuid = fieldSetEntity.getString(CmnConst.DIRECTORY_UUID); + String queryFilter = queryFilterService.getQueryFilter(fieldSetEntity); + if (!BaseUtil.strIsNull(queryFilter)) { + queryFilter = " AND " + queryFilter; + } + StringBuffer sql = new StringBuffer(); + sql.append(" SELECT ") + .append(" a.*,CONCAT(CONVERT(a.file_size / 1024, decimal(10,2)), 'KB') file_size_kb,b.show_name name") + // .append(" concat(c.attachment_domain,'/',c.attachment_container,'/',c.module_uuid,'/',c.attachment_title,?) path ") + .append(" FROM ") + .append(" (SELECT * FROM product_oa_document WHERE directory_uuid = ? ") + .append(queryFilter) + .append(" ) a LEFT JOIN product_sys_staffs b ON a.created_by = b.user_id ") + .append(" LEFT JOIN product_sys_attachments c ON b.staff_avatar=c.uuid "); + String sostoken = Global.getSystemConfig("upload.key", ""); + DataTableEntity documentData = baseDao.listTable(sql.toString(), new String[]{directory_uuid}, fieldSetEntity.getInteger(CmnConst.PAGESIZE), fieldSetEntity.getInteger(CmnConst.CPAGE)); + baseDao.listInternationDataTable(documentData, null); + return documentData; } - baseDao.add(dataTableEntity); - } - @Override - public void documentRepeatOrder(Object[] uuid, String opetype, Object[] file_name,Object[] newFile_name) throws BaseException { - //鑾峰彇鏂囦欢淇℃伅瀛樺叆鏃ュ織琛� - SystemUser user = SpringMVCContextHolder.getCurrentUser(); - DataTableEntity dataTableEntity = new DataTableEntity(); - FieldMetaEntity fieldMeta = new FieldMetaEntity(); - fieldMeta.setTableName(new String[]{CmnConst.product_oa_DOCUMENT_LOG}); - dataTableEntity.setMeta(fieldMeta); - for (int i = 0; i < uuid.length; i++) { - FieldSetEntity fieldSetEntity = new FieldSetEntity(); - fieldSetEntity.setTableName(CmnConst.product_oa_DOCUMENT_LOG); - fieldSetEntity.setMeta(fieldMeta); - fieldSetEntity.setValue(CmnConst.DOCUMENT_UUID,uuid[i]); - //fieldSetEntity.setValue(CmnConst.RECORD,record); - fieldSetEntity.setValue(CmnConst.OPETYPE,opetype); - fieldSetEntity.setValue(CmnConst.OPE_DOCUMENT,file_name[i]); - StringBuffer state = new StringBuffer(); - state.append("鎶奫") - .append(file_name[i]) - .append("]") - .append(opetype) - .append("涓篬") - .append(newFile_name[i]) - .append("]"); - fieldSetEntity.setValue(CmnConst.STATE,state.toString()); //璇存槑 - fieldSetEntity.setValue(CmnConst.CREATED_BY, user.getUser_id());// 鍒涘缓浜� - fieldSetEntity.setValue(CmnConst.CREATED_UTC_DATETIME, DateUtils.getDateTime());// 鍒涘缓鏃堕棿 - dataTableEntity.addFieldSetEntity(fieldSetEntity); + @Override + public FieldSetEntity documentInfo(FieldSetEntity fieldSetEntity) throws BaseException { + String uuid = fieldSetEntity.getString(CmnConst.UUID); + FieldSetEntity fieldSet = baseDao.getFieldSetEntity(CmnConst.product_oa_DOCUMENT, uuid, true); + String file_name = fieldSet.getString(CmnConst.FILE_NAME); + String user_ids = fieldSetEntity.getString(CmnConst.USER_IDS); + String read = fieldSetEntity.getString(CmnConst.READ_NUM); + if (!BaseUtil.strIsNull(user_ids)) { + fieldSetEntity.setValue(CmnConst.REQUIRED_NUMBER, user_ids.split(",").length); + fieldSetEntity.setValue(CmnConst.READ_NUM, read.split(",").length); + } + this.documentation(new Object[]{uuid}, "鏌ョ湅", new Object[]{file_name}, null); + return fieldSet; } - baseDao.add(dataTableEntity); - } - @Override - public FieldSetEntity getButtonPermissions(FieldSetEntity fieldSetEntity) throws BaseException { - String butt = ""; - DataTableEntity dataTable = null; - FieldSetEntity fse = new FieldSetEntity(); - fse.setTableName(CmnConst.product_oa_DOCUMENT); - if("1".equals(fieldSetEntity.getString(CmnConst.DIRECTORY_TYPE))) { - //鑾峰彇鐨剈ser_id - Integer user_id = SpringMVCContextHolder.getCurrentUser().getUser_id(); - String key = "%," + user_id + ",%"; - String directory_uuid = fieldSetEntity.getString(CmnConst.DIRECTORY_UUID); - //String key = "%,140,%"; - StringBuffer sql = new StringBuffer(); - sql.append(" SELECT substring_index(substring_index(a.rigths,',',b.help_topic_id+1),',',-1) fun FROM product_oa_directory_rights a ") - .append(" INNER join mysql.help_topic b on b.help_topic_id < (length(a.rigths) - length(replace(a.rigths,',',''))+1) ") - .append(" WHERE a.directory_uuid = ? AND CONCAT(',',a.storage_uuid,',') LIKE ? "); - //鏆傛椂涓嶇敤 -// sql.append(" SELECT ") -// .append(" fun ") -// .append(" FROM ") -// .append(" ( SELECT ") -// .append(" SUBSTRING_INDEX( SUBSTRING_INDEX( d.rigths, ',', 1 ), ',', - 1 ) fun, ") -// .append(" d.staff_ids, ") -// .append(" d.directory_uuid ") -// .append(" FROM ") -// .append(" (SELECT a.rigths, concat( ',', b.staff_ids, ',' ) staff_ids, a.directory_uuid FROM product_oa_directory_rights a LEFT JOIN product_sys_organizational_structure_storage b ON a.storage_uuid = b.uuid) d UNION ALL ") -// .append(" SELECT ") -// .append(" SUBSTRING_INDEX( SUBSTRING_INDEX( d.rigths, ',', 2 ), ',', - 1 ) fun, ") -// .append(" d.staff_ids, ") -// .append(" d.directory_uuid ") -// .append(" FROM ") -// .append(" (SELECT a.rigths, concat( ',', b.staff_ids, ',' ) staff_ids, a.directory_uuid FROM product_oa_directory_rights a LEFT JOIN product_sys_organizational_structure_storage b ON a.storage_uuid = b.uuid) d UNION ALL ") -// .append(" SELECT ") -// .append(" SUBSTRING_INDEX( SUBSTRING_INDEX( d.rigths, ',', 3 ), ',',- 1 ) fun, ") -// .append(" d.staff_ids, ") -// .append(" d.directory_uuid ") -// .append(" FROM ") -// .append(" (SELECT a.rigths, concat( ',', b.staff_ids, ',' ) staff_ids, a.directory_uuid FROM product_oa_directory_rights a LEFT JOIN product_sys_organizational_structure_storage b ON a.storage_uuid = b.uuid) d UNION ALL ") -// .append(" SELECT ") -// .append(" SUBSTRING_INDEX( SUBSTRING_INDEX( d.rigths, ',', 4 ), ',',- 1 ) fun, ") -// .append(" d.staff_ids, ") -// .append(" d.directory_uuid ") -// .append(" FROM ") -// .append(" (SELECT a.rigths, concat( ',', b.staff_ids, ',' ) staff_ids, a.directory_uuid FROM product_oa_directory_rights a LEFT JOIN product_sys_organizational_structure_storage b ON a.storage_uuid = b.uuid) d UNION ALL ") -// .append(" SELECT ") -// .append(" SUBSTRING_INDEX( SUBSTRING_INDEX( d.rigths, ',', 5 ), ',',- 1 ) fun, ") -// .append(" d.staff_ids, ") -// .append(" d.directory_uuid ") -// .append(" FROM ") -// .append(" (SELECT a.rigths, concat( ',', b.staff_ids, ',' ) staff_ids, a.directory_uuid FROM product_oa_directory_rights a LEFT JOIN product_sys_organizational_structure_storage b ON a.storage_uuid = b.uuid) d UNION ALL ") -// .append(" SELECT ") -// .append(" SUBSTRING_INDEX( SUBSTRING_INDEX( d.rigths, ',', 6 ), ',',- 1 ) fun, ") -// .append(" d.staff_ids, ") -// .append(" d.directory_uuid ") -// .append(" FROM ") -// .append(" (SELECT a.rigths, concat( ',', b.staff_ids, ',' ) staff_ids, a.directory_uuid FROM product_oa_directory_rights a LEFT JOIN product_sys_organizational_structure_storage b ON a.storage_uuid = b.uuid) d UNION ALL ") -// .append(" SELECT ") -// .append(" SUBSTRING_INDEX( SUBSTRING_INDEX( d.rigths, ',', 7 ), ',',- 1 ) fun, ") -// .append(" d.staff_ids, ") -// .append(" d.directory_uuid ") -// .append(" FROM ") -// .append(" (SELECT a.rigths, concat( ',', b.staff_ids, ',' ) staff_ids, a.directory_uuid FROM product_oa_directory_rights a LEFT JOIN product_sys_organizational_structure_storage b ON a.storage_uuid = b.uuid) d ") -// .append(" ) e ") -// .append(" WHERE ") -// .append(" CONCAT(',',e.staff_ids,',') LIKE ? ") -// .append(" AND e.directory_uuid = ? ") -// .append(" GROUP BY ") -// .append(" e.fun "); - DataTableEntity dataTableEntity = baseDao.listTable(sql.toString(), new String[]{directory_uuid,key}); - StringBuffer button = new StringBuffer(); - if (!BaseUtil.dataTableIsEmpty(dataTableEntity)) { - for (int i = 0, length = dataTableEntity.getRows(); i < length; i++) { - FieldSetEntity field = dataTableEntity.getFieldSetEntity(i); - String fun = field.getString("fun"); - //鏉冮檺1(鏌ョ湅),2(涓嬭浇),3(鏂板涓婁紶),4(淇敼,閲嶅懡鍚�),5(鍒犻櫎),6(绉诲姩) - button.append(fun).append(","); - if ("1".equals(fun)) { - //鏈夋煡鐪嬫潈闄愬氨鍔犺浇鍒楄〃 + @Override + public void documentation(Object[] uuid, String opetype, Object[] file_name, String file_directory) throws BaseException { + //鑾峰彇鏂囦欢淇℃伅瀛樺叆鏃ュ織琛� + SystemUser user = SpringMVCContextHolder.getCurrentUser(); + DataTableEntity dataTableEntity = new DataTableEntity(); + FieldMetaEntity fieldMeta = new FieldMetaEntity(); + fieldMeta.setTableName(new String[]{CmnConst.product_oa_DOCUMENT_LOG}); + dataTableEntity.setMeta(fieldMeta); + for (int i = 0; i < uuid.length; i++) { + FieldSetEntity fieldSetEntity = new FieldSetEntity(); + fieldSetEntity.setTableName(CmnConst.product_oa_DOCUMENT_LOG); + fieldSetEntity.setMeta(fieldMeta); + fieldSetEntity.setValue(CmnConst.DOCUMENT_UUID, uuid[i]); + //fieldSetEntity.setValue(CmnConst.RECORD,record); + fieldSetEntity.setValue(CmnConst.OPETYPE, opetype); + fieldSetEntity.setValue(CmnConst.OPE_DOCUMENT, file_name[i]); + StringBuffer state = new StringBuffer(); + state.append(opetype) + .append("浜哰") + .append(file_name[i]) + .append("]"); + if (!BaseUtil.strIsNull(file_directory)) { + state.append("鍒�").append(file_directory).append("鐩綍涓�"); + } + fieldSetEntity.setValue(CmnConst.STATE, state.toString()); //璇存槑 + fieldSetEntity.setValue(CmnConst.CREATED_BY, user.getUser_id());// 鍒涘缓浜� + fieldSetEntity.setValue(CmnConst.CREATED_UTC_DATETIME, DateUtils.getDateTime());// 鍒涘缓鏃堕棿 + dataTableEntity.addFieldSetEntity(fieldSetEntity); + } + baseDao.add(dataTableEntity); + } + + @Override + public void documentRepeatOrder(Object[] uuid, String opetype, Object[] file_name, Object[] newFile_name) throws BaseException { + //鑾峰彇鏂囦欢淇℃伅瀛樺叆鏃ュ織琛� + SystemUser user = SpringMVCContextHolder.getCurrentUser(); + DataTableEntity dataTableEntity = new DataTableEntity(); + FieldMetaEntity fieldMeta = new FieldMetaEntity(); + fieldMeta.setTableName(new String[]{CmnConst.product_oa_DOCUMENT_LOG}); + dataTableEntity.setMeta(fieldMeta); + for (int i = 0; i < uuid.length; i++) { + FieldSetEntity fieldSetEntity = new FieldSetEntity(); + fieldSetEntity.setTableName(CmnConst.product_oa_DOCUMENT_LOG); + fieldSetEntity.setMeta(fieldMeta); + fieldSetEntity.setValue(CmnConst.DOCUMENT_UUID, uuid[i]); + //fieldSetEntity.setValue(CmnConst.RECORD,record); + fieldSetEntity.setValue(CmnConst.OPETYPE, opetype); + fieldSetEntity.setValue(CmnConst.OPE_DOCUMENT, file_name[i]); + StringBuffer state = new StringBuffer(); + state.append("鎶奫") + .append(file_name[i]) + .append("]") + .append(opetype) + .append("涓篬") + .append(newFile_name[i]) + .append("]"); + fieldSetEntity.setValue(CmnConst.STATE, state.toString()); //璇存槑 + fieldSetEntity.setValue(CmnConst.CREATED_BY, user.getUser_id());// 鍒涘缓浜� + fieldSetEntity.setValue(CmnConst.CREATED_UTC_DATETIME, DateUtils.getDateTime());// 鍒涘缓鏃堕棿 + dataTableEntity.addFieldSetEntity(fieldSetEntity); + } + baseDao.add(dataTableEntity); + } + + public boolean verifyOrgExist(String org, Integer user_id) { + String this_user = String.valueOf(user_id); + String[][] orgArr = organizationServiceV2.decomposesMultipleTypeValues(org); + String[] user = orgArr[3]; + if (null != user) { + for (int i = 0; i < user.length; i++) { + if (this_user.equals(user[i])) { + return true; + } + } + } + String[] level = orgArr[0]; + String[] dept = orgArr[1]; + String[] post = orgArr[2]; + if (null != level) { + DataTableEntity org_level_uuid = baseDao.listTable(CmnConst.PRODUCT_SYS_STAFFS, BaseUtil.buildQuestionMarkFilter("org_level_uuid", level, true) + " and user_id=?", new String[]{this_user}); + if (org_level_uuid.getRows() > 0) return true; + } + if (null != dept) { + DataTableEntity dept_uuid = baseDao.listTable(CmnConst.PRODUCT_SYS_STAFFS, BaseUtil.buildQuestionMarkFilter("dept_uuid", dept, true) + " and user_id=?", new String[]{this_user}); + if (dept_uuid.getRows() > 0) return true; + } + if (null != post) { + DataTableEntity post_uuid = baseDao.listTable(CmnConst.PRODUCT_SYS_STAFFS, BaseUtil.buildQuestionMarkFilter("job_post_uuid", post, true) + " and user_id=?", new String[]{this_user}); + if (post_uuid.getRows() > 0) return true; + } + return false; + } + + @Override + public FieldSetEntity getButtonPermissions(FieldSetEntity fieldSetEntity) throws BaseException { + String butt = ""; + DataTableEntity dataTable = null; + FieldSetEntity fse = new FieldSetEntity(); + fse.setTableName(CmnConst.product_oa_DOCUMENT); + if ("1".equals(fieldSetEntity.getString(CmnConst.DIRECTORY_TYPE))) { + //鑾峰彇鐨剈ser_id + Integer user_id = SpringMVCContextHolder.getCurrentUser().getUser_id(); + String key = "%," + user_id + ",%"; + String directory_uuid = fieldSetEntity.getString(CmnConst.DIRECTORY_UUID); + //String key = "%,140,%"; + DataTableEntity dataTableEntity = new DataTableEntity(); + FieldSetEntity org = baseDao.getFieldSetByFilter(CmnConst.product_oa_DIRECTORY_RIGHTS, "directory_uuid=?", new String[]{directory_uuid}, false); + if (verifyOrgExist(org.getString("storage_uuid"), user_id)) { + StringBuffer sql = new StringBuffer(); + sql.append(" SELECT substring_index(substring_index(a.rigths,',',b.help_topic_id+1),',',-1) fun FROM product_oa_directory_rights a ") + .append(" INNER join mysql.help_topic b on b.help_topic_id < (length(a.rigths) - length(replace(a.rigths,',',''))+1) ") + .append(" WHERE a.directory_uuid = ? "); + dataTableEntity = baseDao.listTable(sql.toString(), new String[]{directory_uuid}); + } + StringBuffer button = new StringBuffer(); + if (!BaseUtil.dataTableIsEmpty(dataTableEntity)) { + for (int i = 0, length = dataTableEntity.getRows(); i < length; i++) { + FieldSetEntity field = dataTableEntity.getFieldSetEntity(i); + String fun = field.getString("fun"); + //鏉冮檺1(鏌ョ湅),2(涓嬭浇),3(鏂板涓婁紶),4(淇敼,閲嶅懡鍚�),5(鍒犻櫎),6(绉诲姩) + button.append(fun).append(","); + if ("1".equals(fun)) { + //鏈夋煡鐪嬫潈闄愬氨鍔犺浇鍒楄〃 + dataTable = this.documentAll(fieldSetEntity); + } + } + } + if (!BaseUtil.strIsNull(button.toString())) { + butt = button.substring(0, button.length() - 1); + } + } else { dataTable = this.documentAll(fieldSetEntity); - } } - } - if(!BaseUtil.strIsNull(button.toString())) { - butt = button.substring(0, button.length() - 1); - } - }else { - dataTable = this.documentAll(fieldSetEntity); - } - Map<String, DataTableEntity> dataMap = MapUtils.newHashMap(); - fse.setValue("button", butt); - //鍔犺浇鏂囦欢璺緞 - DataTableEntity file_list = documentDirectoryService.getDirectoryStructure(fieldSetEntity); - dataMap.put("file_list", file_list); - if (BaseUtil.dataTableIsEmpty(dataTable) || dataTable.getSqle() == null){ - fse.setValue(CmnConst.PAGESIZE,0); - fse.setValue(CmnConst.CPAGE, 0); - fse.setValue("total", 0); - }else{ - dataMap.put("dataTable", dataTable); - fse.setValue(CmnConst.PAGESIZE, dataTable.getSqle().getPsize()); - fse.setValue(CmnConst.CPAGE, dataTable.getSqle().getPindex()); - fse.setValue("total", dataTable.getSqle().getTotalCount()); - } - fse.setSubData(dataMap); - - return fse; - } - - @Override - public JSONObject popBoxGetFileDirectory(FieldSetEntity fse) throws BaseException { - //鏂囦欢鐩綍uuid - String directory_uuid = fse.getString(CmnConst.DIRECTORY_UUID); - String type = fse.getString(CmnConst.DIRECTORY_TYPE); - List<Object> param = ListUtils.newArrayList(); - SystemUser user = SpringMVCContextHolder.getCurrentUser(); - StringBuffer sql = new StringBuffer(); - //1涓哄叕鍙告枃浠剁洰褰� - if("1".equals(type)){ - //String staffId = user.getCurrentStaff().getString("staff_id"); - sql.append(" select a.* from product_oa_directory a ") - .append(" LEFT JOIN ( SELECT a.directory_uuid FROM product_oa_directory_rights a LEFT JOIN product_sys_organizational_structure_storage b ") - .append(" on a.storage_uuid = b.uuid WHERE a.rigths like '%3%' AND CONCAT(',',b.staff_ids,',') like ? GROUP BY ") - .append(" a.directory_uuid) b ON a.uuid = b.directory_uuid where a.directory_type = 1 and a.org_level_uuid = ? "); - String staffId ="%" + user.getCurrentStaff().getString("staff_id") + "%"; - param.add(staffId); - param.add(user.getOrg_level_uuid()); - //param.add("%,140,%"); - }else { - sql.append(" select * from product_oa_directory where directory_type = 2 AND created_by = ? "); - param.add(user.getUser_id()); - } - JSONObject object = new JSONObject(); - //directory_uuid涓虹┖灏辨槸鏈�夋嫨鏂囦欢鐩綍 鑾峰彇褰撳墠鏍圭洰褰曞垪琛� - if(BaseUtil.strIsNull(directory_uuid)){ - sql.append(" and directory_tier = 1 "); - //涓嶄负绌哄氨鑾峰彇閫夋嫨鏂囦欢鐩綍 - }else { - String triCode = fse.getString(CmnConst.TRICODE); - param.add(triCode); - sql.append(" and tricode_parent = ? "); - //鍔犺浇鏂囦欢璺緞 - DataTableEntity dataTableEntity = documentDirectoryService.getDirectoryStructure(fse); - object.put("product_oa_directory_path",BaseUtil.dataTableEntityToJson(dataTableEntity)); - } - //sql.append(" GROUP BY tricode,tricode_parent,directory_name"); - DataTableEntity data = baseDao.listTable(sql.toString(),param.toArray()); - - object.put("product_oa_directory_sub",BaseUtil.dataTableEntityToJson(data)); - baseDao.listInternationDataTable(data, null); - - return object; - } - - @Override - @Transactional - public void downloadFile(FieldSetEntity fieldSetEntity) throws BaseException { - String uuid = fieldSetEntity.getString(CmnConst.UUID); - FieldSetEntity fieldSet = baseDao.getFieldSetEntity(CmnConst.product_oa_DOCUMENT,uuid,false); - String file_name = fieldSet.getString(CmnConst.FILE_NAME); - this.documentation(new String[]{uuid},"涓嬭浇", new String[]{file_name},null); - this.markRead(fieldSet); - } - - @Override - public void markRead(FieldSetEntity fieldSetEntity) throws BaseException { - - //鑾峰彇蹇呰浜哄憳ID闆� - String user_ids = fieldSetEntity.getString(CmnConst.USER_IDS); - String read = fieldSetEntity.getString(CmnConst.READ_NUM); - SystemUser user = SpringMVCContextHolder.getCurrentUser(); - user_ids = ","+user_ids+","; - String rawRead = ","+read+","; - String userId = ","+user.getUser_id()+","; - //濡傛灉鍖呭惈鐢ㄦ埛ID - if(BaseUtil.strIsNull(read)){ - fieldSetEntity.setValue(CmnConst.READ_NUM,user.getUser_id()); - baseDao.update(fieldSetEntity); - }else { - if(user_ids.contains(userId) && !rawRead.contains(userId)){ - read = read + "," + user.getUser_id(); - fieldSetEntity.setValue(CmnConst.READ_NUM,read); - baseDao.update(fieldSetEntity); + Map<String, DataTableEntity> dataMap = MapUtils.newHashMap(); + fse.setValue("button", butt); + //鍔犺浇鏂囦欢璺緞 + DataTableEntity file_list = documentDirectoryService.getDirectoryStructure(fieldSetEntity); + dataMap.put("file_list", file_list); + if (BaseUtil.dataTableIsEmpty(dataTable) || dataTable.getSqle() == null) { + fse.setValue(CmnConst.PAGESIZE, 0); + fse.setValue(CmnConst.CPAGE, 0); + fse.setValue("total", 0); + } else { + dataMap.put("dataTable", dataTable); + fse.setValue(CmnConst.PAGESIZE, dataTable.getSqle().getPsize()); + fse.setValue(CmnConst.CPAGE, dataTable.getSqle().getPindex()); + fse.setValue("total", dataTable.getSqle().getTotalCount()); } - } - } + fse.setSubData(dataMap); - /** - * 绉诲姩锛堟枃浠舵壒閲忕Щ鍔級6 - * @param - * @return - * @throws BaseException - */ - @Override - @Transactional - public boolean fileMoveTo(FieldSetEntity fse) throws BaseException { - String directory_uuid = fse.getString(CmnConst.DIRECTORY_UUID); - Integer directory_type = fse.getInteger(CmnConst.DIRECTORY_TYPE); - Integer row = 0; - //1涓哄叕鍙告枃浠跺す - if(directory_type == 1) { - StringBuffer sql = new StringBuffer(); - sql.append(" SELECT * FROM product_oa_directory_rights ") - .append(" WHERE directory_uuid = ? ") - .append(" AND rigths like '%3%' AND concat(',',storage_uuid,',') like ? ");//3涓烘柊澧� - String user_id = String.valueOf(SpringMVCContextHolder.getCurrentUser().getUser_id()); - user_id = "%," + user_id + ",%"; - DataTableEntity dataTableEntity = baseDao.listTable(sql.toString(), new String[]{directory_uuid, user_id}); - row = dataTableEntity.getRows(); + return fse; } - //1涓轰釜浜烘枃浠跺す - if(directory_type == 2 || row > 0) { - FieldSetEntity fieldSetEntity = baseDao.getFieldSetEntity(CmnConst.product_oa_DIRECTORY, directory_uuid, false); - //鑾峰彇绉诲姩鍒扮殑鐩綍鍚� - String directory_name = fieldSetEntity.getString(CmnConst.DIRECTORY_NAME); - String uuids = fse.getString(CmnConst.UUID); - String[] uuid = uuids.split(","); - DataTableEntity dataTable = baseDao.listTable(CmnConst.product_oa_DOCUMENT, BaseUtil.buildQuestionMarkFilter(CmnConst.UUID, uuid.length, true), uuid); - List<String> uuidList = ListUtils.newArrayList(); - List<String> fileNameList = ListUtils.newArrayList(); - for (int i = 0, length = dataTable.getRows(); i < length; i++) { - uuidList.add(dataTable.getFieldSetEntity(i).getString(CmnConst.UUID)); - fileNameList.add(dataTable.getFieldSetEntity(i).getString(CmnConst.FILE_NAME)); - } - String params = directory_uuid + "," + uuids; - String[] param = params.split(","); - boolean flag = baseDao.executeUpdate("UPDATE product_oa_document SET directory_uuid = ? WHERE " + BaseUtil.buildQuestionMarkFilter(CmnConst.UUID, uuid.length, true), param); - this.documentation(uuidList.toArray(), "绉诲姩", fileNameList.toArray(), directory_name); - return flag; - }else { - return false; + @Override + public JSONObject popBoxGetFileDirectory(FieldSetEntity fse) throws BaseException { + //鏂囦欢鐩綍uuid + String directory_uuid = fse.getString(CmnConst.DIRECTORY_UUID); + String type = fse.getString(CmnConst.DIRECTORY_TYPE); + List<Object> param = ListUtils.newArrayList(); + SystemUser user = SpringMVCContextHolder.getCurrentUser(); + StringBuffer sql = new StringBuffer(); + //1涓哄叕鍙告枃浠剁洰褰� + if ("1".equals(type)) { + //String staffId = user.getCurrentStaff().getString("staff_id"); + sql.append(" select a.* from product_oa_directory a ") + .append(" LEFT JOIN ( SELECT a.directory_uuid FROM product_oa_directory_rights a LEFT JOIN product_sys_organizational_structure_storage b ") + .append(" on a.storage_uuid = b.uuid WHERE a.rigths like '%3%' AND CONCAT(',',b.staff_ids,',') like ? GROUP BY ") + .append(" a.directory_uuid) b ON a.uuid = b.directory_uuid where a.directory_type = 1 and a.org_level_uuid = ? "); + String staffId = "%" + user.getCurrentStaff().getString("staff_id") + "%"; + param.add(staffId); + param.add(user.getOrg_level_uuid()); + //param.add("%,140,%"); + } else { + sql.append(" select * from product_oa_directory where directory_type = 2 AND created_by = ? "); + param.add(user.getUser_id()); + } + JSONObject object = new JSONObject(); + //directory_uuid涓虹┖灏辨槸鏈�夋嫨鏂囦欢鐩綍 鑾峰彇褰撳墠鏍圭洰褰曞垪琛� + if (BaseUtil.strIsNull(directory_uuid)) { + sql.append(" and directory_tier = 1 "); + //涓嶄负绌哄氨鑾峰彇閫夋嫨鏂囦欢鐩綍 + } else { + String triCode = fse.getString(CmnConst.TRICODE); + param.add(triCode); + sql.append(" and tricode_parent = ? "); + //鍔犺浇鏂囦欢璺緞 + DataTableEntity dataTableEntity = documentDirectoryService.getDirectoryStructure(fse); + object.put("product_oa_directory_path", BaseUtil.dataTableEntityToJson(dataTableEntity)); + } + //sql.append(" GROUP BY tricode,tricode_parent,directory_name"); + DataTableEntity data = baseDao.listTable(sql.toString(), param.toArray()); + + object.put("product_oa_directory_sub", BaseUtil.dataTableEntityToJson(data)); + baseDao.listInternationDataTable(data, null); + + return object; } - } - @Override - public DataTableEntity getDocumentLog(FieldSetEntity fieldSetEntity) throws BaseException { - return baseDao.listTable("SELECT CONCAT(b.show_name, a.state) log,a.created_utc_datetime FROM product_oa_document_log a LEFT JOIN product_sys_staffs b on a.created_by = b.user_id WHERE document_uuid = ? ORDER BY a.created_utc_datetime DESC", - new String[]{fieldSetEntity.getString(CmnConst.DOCUMENT_UUID)},fieldSetEntity.getInteger(CmnConst.PAGESIZE), fieldSetEntity.getInteger(CmnConst.CPAGE)); - } + @Override + @Transactional + public void downloadFile(FieldSetEntity fieldSetEntity) throws BaseException { + String uuid = fieldSetEntity.getString(CmnConst.UUID); + FieldSetEntity fieldSet = baseDao.getFieldSetEntity(CmnConst.product_oa_DOCUMENT, uuid, false); + String file_name = fieldSet.getString(CmnConst.FILE_NAME); + this.documentation(new String[]{uuid}, "涓嬭浇", new String[]{file_name}, null); + this.markRead(fieldSet); + } + + @Override + public void markRead(FieldSetEntity fieldSetEntity) throws BaseException { + + //鑾峰彇蹇呰浜哄憳ID闆� + String user_ids = fieldSetEntity.getString(CmnConst.USER_IDS); + String read = fieldSetEntity.getString(CmnConst.READ_NUM); + SystemUser user = SpringMVCContextHolder.getCurrentUser(); + user_ids = "," + user_ids + ","; + String rawRead = "," + read + ","; + String userId = "," + user.getUser_id() + ","; + //濡傛灉鍖呭惈鐢ㄦ埛ID + if (BaseUtil.strIsNull(read)) { + fieldSetEntity.setValue(CmnConst.READ_NUM, user.getUser_id()); + baseDao.update(fieldSetEntity); + } else { + if (user_ids.contains(userId) && !rawRead.contains(userId)) { + read = read + "," + user.getUser_id(); + fieldSetEntity.setValue(CmnConst.READ_NUM, read); + baseDao.update(fieldSetEntity); + } + } + } + + /** + * 绉诲姩锛堟枃浠舵壒閲忕Щ鍔級6 + * + * @param + * @return + * @throws BaseException + */ + @Override + @Transactional + public boolean fileMoveTo(FieldSetEntity fse) throws BaseException { + String directory_uuid = fse.getString(CmnConst.DIRECTORY_UUID); + Integer directory_type = fse.getInteger(CmnConst.DIRECTORY_TYPE); + Integer row = 0; + //1涓哄叕鍙告枃浠跺す + if (directory_type == 1) { + StringBuffer sql = new StringBuffer(); + sql.append(" SELECT * FROM product_oa_directory_rights ") + .append(" WHERE directory_uuid = ? ") + .append(" AND rigths like '%3%' AND concat(',',storage_uuid,',') like ? ");//3涓烘柊澧� + String user_id = String.valueOf(SpringMVCContextHolder.getCurrentUser().getUser_id()); + user_id = "%," + user_id + ",%"; + DataTableEntity dataTableEntity = baseDao.listTable(sql.toString(), new String[]{directory_uuid, user_id}); + row = dataTableEntity.getRows(); + } + //1涓轰釜浜烘枃浠跺す + if (directory_type == 2 || row > 0) { + FieldSetEntity fieldSetEntity = baseDao.getFieldSetEntity(CmnConst.product_oa_DIRECTORY, directory_uuid, false); + //鑾峰彇绉诲姩鍒扮殑鐩綍鍚� + String directory_name = fieldSetEntity.getString(CmnConst.DIRECTORY_NAME); + String uuids = fse.getString(CmnConst.UUID); + String[] uuid = uuids.split(","); + DataTableEntity dataTable = baseDao.listTable(CmnConst.product_oa_DOCUMENT, BaseUtil.buildQuestionMarkFilter(CmnConst.UUID, uuid.length, true), uuid); + List<String> uuidList = ListUtils.newArrayList(); + List<String> fileNameList = ListUtils.newArrayList(); + for (int i = 0, length = dataTable.getRows(); i < length; i++) { + uuidList.add(dataTable.getFieldSetEntity(i).getString(CmnConst.UUID)); + fileNameList.add(dataTable.getFieldSetEntity(i).getString(CmnConst.FILE_NAME)); + } + + String params = directory_uuid + "," + uuids; + String[] param = params.split(","); + boolean flag = baseDao.executeUpdate("UPDATE product_oa_document SET directory_uuid = ? WHERE " + BaseUtil.buildQuestionMarkFilter(CmnConst.UUID, uuid.length, true), param); + this.documentation(uuidList.toArray(), "绉诲姩", fileNameList.toArray(), directory_name); + return flag; + } else { + return false; + } + } + + @Override + public DataTableEntity getDocumentLog(FieldSetEntity fieldSetEntity) throws BaseException { + return baseDao.listTable("SELECT CONCAT(b.show_name, a.state) log,a.created_utc_datetime FROM product_oa_document_log a LEFT JOIN product_sys_staffs b on a.created_by = b.user_id WHERE document_uuid = ? ORDER BY a.created_utc_datetime DESC", + new String[]{fieldSetEntity.getString(CmnConst.DOCUMENT_UUID)}, fieldSetEntity.getInteger(CmnConst.PAGESIZE), fieldSetEntity.getInteger(CmnConst.CPAGE)); + } } -- Gitblit v1.9.2