From 51065db2a119ddde88c7e1a7c4b37d9ef622921e Mon Sep 17 00:00:00 2001 From: zm <2369059705qq.com> Date: 星期五, 06 九月 2024 11:53:03 +0800 Subject: [PATCH] 归档按钮权限控制 --- src/main/java/com/product/file/service/DocumentService.java | 1253 ++++++++++++++++++++++++++++++++++++----------------------- 1 files changed, 765 insertions(+), 488 deletions(-) diff --git a/src/main/java/com/product/file/service/DocumentService.java b/src/main/java/com/product/file/service/DocumentService.java index 03257d8..26ef4ca 100644 --- a/src/main/java/com/product/file/service/DocumentService.java +++ b/src/main/java/com/product/file/service/DocumentService.java @@ -6,7 +6,7 @@ import com.product.common.collect.ListUtils; import com.product.common.collect.MapUtils; import com.product.common.lang.DateUtils; -import com.product.core.config.Global; +import com.product.common.lang.StringUtils; import com.product.core.dao.BaseDao; import com.product.core.entity.DataTableEntity; import com.product.core.entity.FieldMetaEntity; @@ -17,16 +17,14 @@ import com.product.core.spring.context.SpringMVCContextHolder; import com.product.core.transfer.Transactional; import com.product.file.config.CmnConst; +import com.product.file.config.DocumentCode; import com.product.file.service.ide.IDocumentService; import com.product.module.sys.entity.SystemUser; import com.product.util.BaseUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Map; +import java.util.*; /** * Copyright lx @@ -40,526 +38,805 @@ @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; - @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(); - } + @Override + @Transactional + public String addDocument(FieldSetEntity fse) throws BaseException { + //鑾峰彇闄勪欢鐩綍鍜岄檮浠秛uid + String directory_uuid = fse.getString(CmnConst.DIRECTORY_UUID); + String fileUUIDs = fse.getString(CmnConst.ATTACHMENTS_UUID); + String[] fileUUIDArray = fileUUIDs.split(","); + //鑾峰彇闄勪欢淇℃伅 + DataTableEntity attachments = baseDao.listTable(CmnConst.PRODUCT_SYS_ATTACHMENTS, BaseUtil.buildQuestionMarkFilter(CmnConst.UUID, fileUUIDArray, true)); + List<String> uuidList = ListUtils.newArrayList(); + List<String> fileNameList = ListUtils.newArrayList(); + //寰幆闄勪欢淇℃伅锛岀敓鎴愭枃妗d俊鎭� + for (int i = 0, length = attachments.getRows(); i < length; i++) { + FieldSetEntity attachment = attachments.getFieldSetEntity(i); + //鍒涘缓鏂囨。鏁版嵁瀹瑰櫒 + FieldSetEntity fseDocument = new FieldSetEntity(CmnConst.PRODUCT_OA_DOCUMENT); + fseDocument.setValue(CmnConst.ATTACHMENTS_UUID, attachment.getUUID()); + fseDocument.setValue(CmnConst.DIRECTORY_UUID, directory_uuid); + fseDocument.setValue(CmnConst.FILE_SIZE, attachment.getString(CmnConst.ATTACHMENT_SIZE)); + fseDocument.setValue(CmnConst.CREATED_BY, SpringMVCContextHolder.getCurrentUser().getUser_id()); + fseDocument.setValue(CmnConst.CREATED_UTC_DATETIME, DateUtils.getDateTime()); + //鏂囦欢鍚嶇О + String file_name = attachment.getString(CmnConst.FILE_NAME); + fseDocument.setValue(CmnConst.FILE_NAME, file_name); + //鏂囦欢绫诲瀷 + String file_type = file_name.substring(file_name.lastIndexOf(".") + 1); + fseDocument.setValue(CmnConst.FILE_TYPE, file_type); + //淇濆瓨鏁版嵁 + String documentUUID = baseDao.add(fseDocument); - @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; - } + //鍒涘缓鏂囨。鐗堟湰鏁版嵁瀹瑰櫒 + FieldSetEntity fseDocumentHistory = new FieldSetEntity(CmnConst.PRODUCT_OA_DOCUMENT_HISTORY); + BaseUtil.createCreatorAndCreationTime(fseDocumentHistory); + fseDocumentHistory.setValue("document_uuid", documentUUID); + fseDocumentHistory.setValue("attachment_uuid", attachment.getUUID()); + fseDocumentHistory.setValue("version_number", "v1"); + baseDao.add(fseDocumentHistory); - /** - * 闇�瑕佹壒閲忓垹闄� - * - * @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; - } + uuidList.add(documentUUID); + fileNameList.add(file_name); + } + this.documentation(uuidList.toArray(), "鏂板", fileNameList.toArray(), null); + return uuidList.toString(); + } - @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; - } + @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; + } - @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; - } + /** + * 闇�瑕佹壒閲忓垹闄� + * + * @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 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 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; + } + // file_name created_by created_utc_datetime - @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); - } + StringBuffer sql = new StringBuffer(); - public boolean verifyOrgExist(String org) { - Integer user_id = SpringMVCContextHolder.getCurrentUser().getUser_id(); - String code = SpringMVCContextHolder.getCurrentUser().getCurrentStaff().getString("tricode"); - //鑾峰彇鎵�鏈変笂绾х紪鐮� - String[] superior_code = new String[code.split("-").length - 1]; - for (int i = 0; i < code.split("-").length - 1; i++) { - superior_code[i] = code.substring(0, code.length() - ((i + 1) * 4)); - } - String this_user = String.valueOf(user_id); - SpringMVCContextHolder.getCurrentUser().getLanguageCode(); - String[][] orgArr = BaseUtil.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]; - // List<String> list = Arrays.asList(a); --OK - // List<String> list = Arrays.asList("A","B","C"); --OK - // list.add("F"); --UnsupportedOperationException - // list.remove("A"); --UnsupportedOperationException - // list.set(1,"javaee");--OK (鍥犱负鏄妸鏁扮粍杞负闆嗗悎锛屽叾鏈川杩樻槸鏁扮粍锛屾暟缁勯暱搴﹀浐瀹氫笉鍙橈紝浣嗗唴瀹瑰彲浠ユ敼鍙�) - // 缁撹锛氳櫧鐒跺彲浠ユ妸鏁扮粍杞负闆嗗悎锛屼絾鏄泦鍚堥暱搴︿笉鑳芥敼鍙� - List list = new ArrayList(); - ; - if (null != level) { - list.addAll(Arrays.asList(level)); - } - if (null != dept) { - list.addAll(Arrays.asList(dept)); - } - String[] level_dept = new String[list.size()]; - list.toArray(level_dept); + sql.append("SELECT \n"); + sql.append(" E.route_name,A.*,B.show_name name, \n"); + sql.append(" CONCAT(CONVERT(a.file_size / 1024, decimal(10,2)), 'KB') file_size_kb, \n"); + sql.append(" CASE WHEN D.document_uuid IS NOT NULL THEN '1' ELSE '0' END AS is_collection, \n"); + sql.append(" (SELECT case when COUNT(*)=0 then 1 else COUNT(*) end FROM product_oa_document_history where product_oa_document_history.document_uuid=A.uuid) -1 history_count "); + sql.append(" ,if(A.turn_button is null,'鍚�','鏄�') turn"); + sql.append(" FROM( \n"); + if ("!borrow".equals(directory_uuid)) { + //鍊熼槄鏂囦欢澶规煡璇㈡枃浠剁壒娈婂鐞� + sql.append("SELECT\n"); + sql.append("doc.*\n"); + sql.append(" FROM\n"); + sql.append("product_oa_directory dir\n"); + sql.append("JOIN product_oa_document doc ON dir.uuid = doc.uuid\n"); + sql.append("WHERE\n"); + sql.append("dir.directory_type = 1\n"); + sql.append("AND doc.attachments_uuid IN (\n"); + sql.append(" SELECT\n"); + sql.append(" sub_uuid\n"); + sql.append(" FROM\n"); + sql.append(" product_oa_document_borrow_sub\n"); + sql.append(" WHERE\n"); + sql.append(" borrow_uuid IN ( SELECT uuid FROM product_oa_document_borrow WHERE borrower = ? AND flow_flag=2))\n"); + directory_uuid = SpringMVCContextHolder.getCurrentUserId(); + } else if ("!favorite".equals(directory_uuid)) { + sql.append("SELECT\n"); + sql.append("doc.*\n"); + sql.append(" FROM\n"); + sql.append("product_oa_document_collection collect\n"); + sql.append("JOIN product_oa_document doc ON collect.document_uuid = doc.uuid\n"); + sql.append("where document_collector=?\n"); + directory_uuid = SpringMVCContextHolder.getCurrentUserId(); + } else { + + sql.append(" SELECT * FROM product_oa_document \n"); + sql.append(" WHERE directory_uuid = ? \n"); + } + sql.append(queryFilter); + sql.append(")A \n"); + sql.append("LEFT JOIN product_sys_staffs B ON B.user_id = A.created_by \n"); + sql.append("LEFT JOIN product_sys_attachments C ON C.uuid = B.staff_avatar \n"); + sql.append("LEFT JOIN product_oa_document_collection D ON D.document_uuid = A.uuid AND D.created_by = ?"); + sql.append("LEFT JOIN product_sys_function_buttons E ON E.uuid = A.turn_button "); + + DataTableEntity documentData = baseDao.listTable(sql.toString(), new String[]{directory_uuid, SpringMVCContextHolder.getCurrentUserId()}, + 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); + } + 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); + } + 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 = SpringMVCContextHolder.getCurrentUser().getUser_id(); + String code = SpringMVCContextHolder.getCurrentUser().getCurrentStaff().getString("tricode"); + //鑾峰彇鎵�鏈変笂绾х紪鐮� + String[] superior_code = new String[code.split("-").length - 1]; + for (int i = 0; i < code.split("-").length - 1; i++) { + superior_code[i] = code.substring(0, code.length() - ((i + 1) * 4)); + } + String this_user = String.valueOf(user_id); + SpringMVCContextHolder.getCurrentUser().getLanguageCode(); + String[][] orgArr = BaseUtil.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]; + // List<String> list = Arrays.asList(a); --OK + // List<String> list = Arrays.asList("A","B","C"); --OK + // list.add("F"); --UnsupportedOperationException + // list.remove("A"); --UnsupportedOperationException + // list.set(1,"javaee");--OK (鍥犱负鏄妸鏁扮粍杞负闆嗗悎锛屽叾鏈川杩樻槸鏁扮粍锛屾暟缁勯暱搴﹀浐瀹氫笉鍙橈紝浣嗗唴瀹瑰彲浠ユ敼鍙�) + // 缁撹锛氳櫧鐒跺彲浠ユ妸鏁扮粍杞负闆嗗悎锛屼絾鏄泦鍚堥暱搴︿笉鑳芥敼鍙� + List list = new ArrayList(); + ; + if (null != level) { + list.addAll(Arrays.asList(level)); + } + if (null != dept) { + list.addAll(Arrays.asList(dept)); + } + String[] level_dept = new String[list.size()]; + list.toArray(level_dept); - String[] post = orgArr[2]; - if (level_dept.length != 0) { - DataTableEntity org_level_uuid = baseDao.listTable(CmnConst.TABLE_PRODUCT_SYS_ORG_LEVELS, BaseUtil.buildQuestionMarkFilter("uuid", level_dept, true) + " and " + BaseUtil.buildQuestionMarkFilter("org_level_code", superior_code, true), new String[]{}); - if (org_level_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; - } + String[] post = orgArr[2]; + if (level_dept.length != 0) { + DataTableEntity org_level_uuid = baseDao.listTable(CmnConst.TABLE_PRODUCT_SYS_ORG_LEVELS, BaseUtil.buildQuestionMarkFilter("uuid", level_dept, true) + " and " + BaseUtil.buildQuestionMarkFilter("org_level_code", superior_code, true), new String[]{}); + if (org_level_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"))) { - 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); - } - 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); + @Override + public FieldSetEntity getButtonPermissions(FieldSetEntity fieldSetEntity) throws BaseException { + String butt = ""; + DataTableEntity dataTable = null; + FieldSetEntity fse = new FieldSetEntity(); + fse.setTableName(CmnConst.PRODUCT_OA_DOCUMENT); + if (StringUtils.equalsAny(fieldSetEntity.getString(CmnConst.DIRECTORY_UUID), "!borrow", "!favorite")) { + // 鏀惰棌澶瑰拰鍊熼槄鏂囦欢澶圭壒娈婂鐞� - return fse; - } + dataTable = this.documentAll(fieldSetEntity); + butt = "1,2"; + } else 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(); - @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()); + FieldSetEntity org = recursionRole(directory_uuid); + if (verifyOrgExist(org.getString("storage_uuid"))) { + 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[]{org.getString("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); + } + Map<String, DataTableEntity> dataMap = MapUtils.newHashMap(); + fse.setValue("button", butt); + //鍔犺浇鏂囦欢璺緞 + DataTableEntity file_list; + if (StringUtils.equalsAny(fieldSetEntity.getString(CmnConst.DIRECTORY_UUID), "!borrow", "!favorite")) { + file_list = new DataTableEntity(); + FieldSetEntity ff = new FieldSetEntity("product_oa_directory"); + ff.setValue("uuid", fieldSetEntity.getString(CmnConst.DIRECTORY_UUID)); + ff.setValue("directory_name", "!borrow".equals(fieldSetEntity.getString(CmnConst.DIRECTORY_UUID)) ? "鍊熼槄鏂囦欢澶�" : "鏀惰棌澶�"); + file_list.addFieldSetEntity(ff); + } else { + 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); - object.put("PRODUCT_OA_directory_sub", BaseUtil.dataTableEntityToJson(data)); - baseDao.listInternationDataTable(data, null); + return fse; + } - return object; - } + /** + * 閫掑綊鑾峰彇鏉冮檺濡傛灉褰撳墠鏂囨。鏈厤缃潈闄愬氨鍘婚�掑綊鏌ヨ鐖剁骇鏉冮檺 + * @param directory_uuid + * @return + */ + private FieldSetEntity recursionRole(String directory_uuid){ + FieldSetEntity org = baseDao.getFieldSetByFilter(CmnConst.PRODUCT_OA_DIRECTORY_RIGHTS, "directory_uuid=?", new String[]{directory_uuid}, false); + if (FieldSetEntity.isEmpty(org)&&!StringUtils.isEmpty(directory_uuid)){ + FieldSetEntity directoryFs = baseDao.getFieldSet(CmnConst.PRODUCT_OA_DIRECTORY, directory_uuid,false); + FieldSetEntity parentFs = baseDao.getFieldSetByFilter(CmnConst.PRODUCT_OA_DIRECTORY, "tricode=?",new String[]{directoryFs.getString("tricode_parent")},false); + org=recursionRole(parentFs.getUUID()); + } + return org; + } - @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 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()); - @Override - public void markRead(FieldSetEntity fieldSetEntity) throws BaseException { + object.put("product_oa_directory_sub", BaseUtil.dataTableEntityToJson(data)); + baseDao.listInternationDataTable(data, null); - //鑾峰彇蹇呰浜哄憳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); - } - } - } + return object; + } - /** - * 绉诲姩锛堟枃浠舵壒閲忕Щ鍔級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)); - } + @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); + } - 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 void markRead(FieldSetEntity fieldSetEntity) throws BaseException { - @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)); - } + //鑾峰彇蹇呰浜哄憳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); + } + } + } - @Override - public DataTableEntity getApplyDocument() throws BaseException { + /** + * 绉诲姩锛堟枃浠舵壒閲忕Щ鍔級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)); + } - DataTableEntity product_oa_document = baseDao.listTable("product_oa_document"); + 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; + } + } - return product_oa_document; - } + @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 - public void addOrUpdateApplyDocument(FieldSetEntity fse) throws BaseException { + /** + * 鏂囨。鏀惰棌 + * + * @param fse + * @return + */ + public String documentCollection(FieldSetEntity fse) { + BaseUtil.createCreatorAndCreationTime(fse); + fse.setValue("document_collector", SpringMVCContextHolder.getCurrentUserId()); + return baseDao.add(fse); + } - String[] attachment = new String[0]; - if(ObjectUtil.isNotEmpty(fse.getString("uuid"))){ - UUID uuid = UUID.randomUUID(); - fse.setValue("uuid",uuid); - baseDao.add(fse); + /** + * 鏂囨。鍙栨秷鏀惰棌 + * + * @param documentUUID + * @return + */ + public boolean documentCancelCollection(String documentUUID) { + return baseDao.delete(CmnConst.PRODUCT_OA_DOCUMENT_COLLECTION, "document_uuid = ? AND document_collector = ?", new Object[]{documentUUID, SpringMVCContextHolder.getCurrentUserId()}); + } - if(ObjectUtil.isNotEmpty(fse.getString("attachment_uuid"))){ - String attachment_uuid = fse.getString("attachment_uuid"); - attachment= attachment_uuid.split(","); - } - for (int i = 0; i < attachment.length; i++) { - FieldSetEntity fieldSetEntity = new FieldSetEntity(); - fieldSetEntity.setTableName("product_oa_document_borrow_sub"); - fieldSetEntity.setValue("borrow_uuid",uuid); - fieldSetEntity.setValue("sub_uuid",attachment[i]); + /** + * 鏌ヨ鏂囨。鍘嗗彶鐗堟湰 + * + * @param documentUUID + * @return + */ + public DataTableEntity findDocumentHistory(String documentUUID) { + StringBuilder sql = new StringBuilder(); + sql.append("SELECT A.*,B.file_name\n"); + sql.append("FROM product_oa_document_history A \n"); + sql.append("LEFT JOIN product_oa_document B ON B.uuid = A.document_uuid \n"); + sql.append("WHERE A.document_uuid = ?\n"); + sql.append("ORDER BY A.version_number"); + return baseDao.listTable(sql.toString(), new Object[]{documentUUID}); + } - } + /** + * 鏂囨。鏈�鏂扮増鏈繚瀛� + * + * @param fse + * @return + */ + @Transactional + public boolean documentSaveNewVersion(FieldSetEntity fse) { + // 鑾峰彇鏂囨。鏁版嵁鍜屾渶澶х紪鍙� + StringBuilder sql = new StringBuilder(); + sql.append("SELECT A.*, IFNULL(B.max_version_number, '0')AS max_version_number \n"); + sql.append("FROM product_oa_document A \n"); + sql.append("LEFT JOIN ( \n"); + sql.append(" SELECT document_uuid, MAX(version_number) AS max_version_number \n"); + sql.append(" FROM product_oa_document_history B \n"); + sql.append(" WHERE document_uuid = ? \n"); + sql.append(" GROUP BY document_uuid \n"); + sql.append(") B ON B.document_uuid = A.uuid \n"); + sql.append("WHERE uuid = ? \n"); + String documentUuid = fse.getString("document_uuid"); + FieldSetEntity fseDocument = baseDao.getFieldSetEntityBySQL(sql.toString(), new Object[]{documentUuid, documentUuid}, false); + if (fseDocument == null) { + throw new BaseException(DocumentCode.DOCUMENT_DATA_NO_EXIST.getValue(), DocumentCode.DOCUMENT_DATA_NO_EXIST.getText()); + } - }else { - String uuid = fse.getString("uuid"); - String filter="borrow_uuid='"+uuid+"'"; - //鍒犻櫎鍘熸潵闄勪欢淇℃伅 - baseDao.delete("product_oa_document_borrow_sub",filter,new Object[]{}); - baseDao.update(fse); - if(ObjectUtil.isNotEmpty(fse.getString("attachment_uuid"))){ - String attachment_uuid = fse.getString("attachment_uuid"); - attachment= attachment_uuid.split(","); - } + String attachmentUuid = fse.getString("attachment_uuid"); + FieldSetEntity fieldSetEntity = baseDao.getFieldSetEntity(CmnConst.PRODUCT_SYS_ATTACHMENTS, attachmentUuid, false); + fseDocument.setValue("file_size", fieldSetEntity.getString(CmnConst.ATTACHMENT_SIZE)); + fseDocument.setValue("file_name", fieldSetEntity.getString("file_name")); + fseDocument.setValue("attachments_uuid", attachmentUuid); + fseDocument.setValue("latest_version", fseDocument.getInteger("max_version_number") + 1); - //閲嶆柊璺熸柊闄勪欢淇℃伅 - for (int i = 0; i < attachment.length; i++) { - FieldSetEntity fieldSetEntity = new FieldSetEntity(); - fieldSetEntity.setTableName("product_oa_document_borrow_sub"); - fieldSetEntity.setValue("borrow_uuid",uuid); - fieldSetEntity.setValue("sub_uuid",attachment[i]); - baseDao.add(fieldSetEntity); + baseDao.saveFieldSetEntity(fseDocument); - } + // 鍒涘缓鏂囨。鎿嶄綔鏃ュ織淇℃伅 + FieldSetEntity fseDocumentLog = new FieldSetEntity(CmnConst.PRODUCT_OA_DOCUMENT_LOG); + BaseUtil.createCreatorAndCreationTime(fseDocumentLog); + fseDocumentLog.setValue("document_uuid", documentUuid); + fseDocumentLog.setValue("opetype", "鏂板"); + fseDocumentLog.setValue("ope_document", fieldSetEntity.getString("file_name")); + fseDocumentLog.setValue("state", "鏂板浜哰" + fieldSetEntity.getString("file_name") + "]鏈�鏂扮増鏈�"); + + //鍒涘缓鏂囨。鐗堟湰鏁版嵁瀹瑰櫒 + FieldSetEntity fseDocumentHistory = new FieldSetEntity(CmnConst.PRODUCT_OA_DOCUMENT_HISTORY); + BaseUtil.createCreatorAndCreationTime(fseDocumentHistory); + fseDocumentHistory.setValue("document_uuid", documentUuid); + fseDocumentHistory.setValue("attachment_uuid", attachmentUuid); + fseDocumentHistory.setValue("version_number", fseDocument.getObject("latest_version")); + return baseDao.saveFieldSetEntity(fseDocumentHistory); + } + + /** + * 鏂囨。鐗堟湰+1 + * + * @param originNumber + * @return + */ + public String versionNUmberAddne(String originNumber) { + String numberStr = originNumber.substring(1); // 鍘绘帀鍓嶇紑"v" + int number = Integer.parseInt(numberStr); // 灏嗗瓧绗︿覆杞� + // 鏁板瓧鍔犱竴 + number += 1; + + // 閲嶆柊鏋勫缓瀛楃涓诧紙杩欓噷鎴戜滑鍋囪鍓嶇紑鎬绘槸"v"锛� + return "v" + number; + } + + @Override + public DataTableEntity getApplyDocument(FieldSetEntity fse) throws BaseException { + + String sub_uuid = fse.getString("sub_uuid"); + String sub_uuid_replace = sub_uuid.replace("\"", ""); + String[] sub_uuid_split = sub_uuid_replace.split(","); + String sub_uuids=""; + for (int i = 0; i < sub_uuid_split.length; i++) { + + if(i==sub_uuid_split.length-1){ + sub_uuids=sub_uuids+"\""+sub_uuid_split[i]+"\""; + }else { + sub_uuids=sub_uuids+"\""+sub_uuid_split[i]+"\","; + } + } + List<String> param = new ArrayList<>(); + StringBuilder sb=new StringBuilder(); + sb.append(" SELECT a.*,f.show_name"); + sb.append(" FROM product_sys_attachments a "); + sb.append(" LEFT JOIN product_sys_staffs f "); + sb.append(" on a.created_by =f.user_id "); + sb.append(" where a.uuid in ("+sub_uuids+")"); + DataTableEntity product_sys_attachments = baseDao.listTable(sb.toString(),param.toArray()); + return product_sys_attachments; + } + + @Override + public void addOrUpdateApplyDocument(FieldSetEntity fse) throws BaseException { + + String[] attachment = new String[0]; + if (ObjectUtil.isNotEmpty(fse.getString("uuid"))) { + UUID uuid = UUID.randomUUID(); + fse.setValue("uuid", uuid); + baseDao.add(fse); + + if (ObjectUtil.isNotEmpty(fse.getString("attachment_uuid"))) { + String attachment_uuid = fse.getString("attachment_uuid"); + attachment = attachment_uuid.split(","); + } + for (int i = 0; i < attachment.length; i++) { + FieldSetEntity fieldSetEntity = new FieldSetEntity(); + fieldSetEntity.setTableName("product_oa_document_borrow_sub"); + fieldSetEntity.setValue("borrow_uuid", uuid); + fieldSetEntity.setValue("sub_uuid", attachment[i]); + + } + + } else { + String uuid = fse.getString("uuid"); + String filter = "borrow_uuid='" + uuid + "'"; + //鍒犻櫎鍘熸潵闄勪欢淇℃伅 + baseDao.delete("product_oa_document_borrow_sub", filter, new Object[]{}); + baseDao.update(fse); + if (ObjectUtil.isNotEmpty(fse.getString("attachment_uuid"))) { + String attachment_uuid = fse.getString("attachment_uuid"); + attachment = attachment_uuid.split(","); + } + + //閲嶆柊璺熸柊闄勪欢淇℃伅 + for (int i = 0; i < attachment.length; i++) { + FieldSetEntity fieldSetEntity = new FieldSetEntity(); + fieldSetEntity.setTableName("product_oa_document_borrow_sub"); + fieldSetEntity.setValue("borrow_uuid", uuid); + fieldSetEntity.setValue("sub_uuid", attachment[i]); + baseDao.add(fieldSetEntity); + + } - } + } - } + } - @Override - public DataTableEntity getApplayFileSort() throws BaseException { - StringBuilder sb=new StringBuilder(); - sb.append(" SELECT b.* FROM ("); - sb.append(" SELECT t.uuid,t.file_name,s.show_name,t.created_utc_datetime,count(t.uuid) as applyCount"); - sb.append(" FROM product_oa_document_borrow_sub b"); - sb.append(" JOIN product_oa_document t"); - sb.append(" on b.sub_uuid=t.uuid"); - sb.append(" JOIN product_sys_staffs s "); - sb.append(" on t.created_by=s.user_id"); - sb.append(" group by t.file_name,t.uuid,s.show_name,t.created_utc_datetime"); - sb.append(" )b order by b.applyCount asc"); - DataTableEntity dataTableEntity = baseDao.listTable(sb.toString()); - return dataTableEntity; - } + @Override + public DataTableEntity getApplyFileSort() throws BaseException { + StringBuilder sb = new StringBuilder(); + List<String> param = new ArrayList<>(); + sb.append(" SELECT b.* FROM ("); + sb.append(" SELECT t.uuid,t.file_name,t.attachment_size as file_size,s.show_name,t.created_utc_datetime,count(t.uuid) as applyCount"); + sb.append(" FROM product_oa_document_borrow_sub b"); + sb.append(" JOIN product_sys_attachments t"); + sb.append(" on b.sub_uuid=t.uuid"); + sb.append(" JOIN product_sys_staffs s "); + sb.append(" on t.created_by=s.user_id"); + sb.append(" group by t.file_name,t.uuid,s.show_name,t.created_utc_datetime,t.attachment_size"); + sb.append(" )b order by b.applyCount asc"); + DataTableEntity dataTableEntity = baseDao.listTable(sb.toString(), param.toArray()); + return dataTableEntity; + } - @Override - public DataTableEntity getApplayUserSort() throws BaseException { - StringBuilder sb=new StringBuilder(); - sb.append(" SELECT a.borrower,a.show_name,a.applayCount,a.applayFileCount "); - sb.append(" FROM ("); - sb.append(" SELECT w.borrower,"); - sb.append(" (select count(borrower) from product_oa_document_borrow group by borrower ) as applayCount,"); - sb.append(" count(sub_uuid) as applayFileCount "); - sb.append(" FROM product_oa_document_borrow w "); - sb.append(" JOIN product_oa_document_borrow_sub b"); - sb.append(" on b.borrow_uuid=w.uuid"); - sb.append(" JOIN product_oa_document t"); - sb.append(" on b.sub_uuid=t.uuid"); - sb.append(" JOIN product_sys_staffs s"); - sb.append(" on w.borrower=s.user_id"); - sb.append(" GROUP BY w.borrower,s.show_name"); - sb.append(" )a"); - sb.append(" order by a.applayCount,a.applayFileCount asc"); - DataTableEntity dataTableEntity = baseDao.listTable(sb.toString()); - return dataTableEntity; - } + @Override + public DataTableEntity getApplyUserSort() throws BaseException { + StringBuilder sb = new StringBuilder(); + List<String> param = new ArrayList<>(); + sb.append(" SELECT b.*,a.applayCount "); + sb.append(" FROM ("); + sb.append(" SELECT borrower,count(borrower) as applayCount"); + sb.append(" FROM product_oa_document_borrow "); + sb.append(" group by borrower"); + sb.append(" ) a LEFT JOIN "); + sb.append(" ("); + sb.append(" SELECT a.borrower,a.show_name,a.applayFileCount "); + sb.append(" FROM ("); + sb.append(" SELECT w.borrower,s.show_name,"); + sb.append(" count( borrower ) AS applayCount,"); + sb.append(" count(sub_uuid) as applayFileCount "); + sb.append(" FROM product_oa_document_borrow w "); + sb.append(" left JOIN product_oa_document_borrow_sub b"); + sb.append(" on b.borrow_uuid=w.uuid"); + sb.append(" left JOIN product_sys_attachments t"); + sb.append(" on b.sub_uuid=t.uuid"); + sb.append(" left JOIN product_sys_staffs s"); + sb.append(" on w.borrower=s.user_id"); + sb.append(" GROUP BY w.borrower,s.show_name"); + sb.append(" )a )b"); + sb.append(" on a.borrower=b.borrower "); + sb.append(" order by a.applayCount,b.applayFileCount asc"); + DataTableEntity dataTableEntity = baseDao.listTable(sb.toString(), param.toArray()); + return dataTableEntity; + } + + @Override + public FieldSetEntity getApplyInfo(FieldSetEntity fes) throws BaseException { + String uuid = fes.getString("uuid"); + FieldSetEntity product_oa_document_borrow = baseDao.getFieldSetEntity("product_oa_document_borrow", uuid, false); + return product_oa_document_borrow; + } + + public Map<String, String> isPermission(String documentUuid) { + // 楠岃瘉鏂囨。鏉冮檺 + if (StringUtils.isEmpty(documentUuid)) { + throw new BaseException(DocumentCode.DOCUMENT_FORM_NODATA); + } + + String[] docuemnts = documentUuid.split(","); + //鏌ヨ鍊熼槄璁板綍 + DataTableEntity dt = baseDao.listTable(" SELECT 1 isPermission,sub_uuid document_uuid from product_oa_document_borrow_sub where borrow_uuid in" + + " (select uuid from product_oa_document_borrow where start_time>=now() and end_time<=now() and borrower=? and flow_flag=2) and " + BaseUtil.buildQuestionMarkFilter("sub_uuid", docuemnts, true), + new Object[]{SpringMVCContextHolder.getCurrentUserId()}); + + Map<String, String> permission = new HashMap<>(); + if (!DataTableEntity.isEmpty(dt)) { + for (int i = 0; i < dt.getRows(); i++) { + String docUuid = dt.getString(i, "document_uuid"); + if (dt.getBoolean(i, "isPermission")) { + permission.put(docUuid, "1"); + } + } + } + + StringBuilder sql = new StringBuilder(); + sql.append("SELECT\n"); + sql.append("document.uuid document_uuid,\n"); + sql.append("rights.*\n"); + sql.append(" FROM\n"); + sql.append("product_oa_document document\n"); + sql.append("JOIN product_oa_directory dir ON dir.uuid = document.directory_uuid\n"); + sql.append("JOIN product_oa_directory_rights rights ON dir.uuid = rights.directory_uuid\n"); + sql.append("WHERE\n"); + sql.append("dir.directory_type = 1\n"); + sql.append("AND rights.rigths LIKE '%1%'\n"); + sql.append(" and ").append(BaseUtil.buildQuestionMarkFilter("document.uuid", docuemnts.length, true)); + dt = baseDao.listTable(sql.toString(), docuemnts); + if (!DataTableEntity.isEmpty(dt)) { + for (int i = 0; i < dt.getRows(); i++) { + String docUuid = dt.getString(i, "document_uuid"); + String storage_uuid = dt.getString(i, "storage_uuid"); + if (verifyOrgExist(storage_uuid)) { + String rights = permission.get(docUuid); + if (StringUtils.isEmpty(rights)) { + rights = "1"; + } + if (rights.indexOf("2") == -1 && StringUtils.indexOf(dt.getString(i, "rigths"), "2") != -1) { + rights += ",2"; + } + permission.put(docUuid, rights); + } + } + } + return permission; + } + public DataTableEntity getFileItemize(FieldSetEntity fes) throws BaseException { + DataTableEntity dt = baseDao.listTable("SELECT b.classify_name,COUNT(1) number FROM product_oa_document a LEFT JOIN product_oa_document_classify_config b on a.business_classify_uuid=b.uuid\n" + + "where classify_name is not null GROUP BY b.classify_name ORDER BY COUNT(1)",new String[]{}); + for (int i = 0; i <dt.getRows() ; i++) { + dt.setFieldValue(i,"ranking",i+1); + } + return dt; + } } -- Gitblit v1.9.2