| | |
| | | try { |
| | | String document_template = ff.getString("document_template"); |
| | | String document_template_tail = ff.getString("document_template_tail"); |
| | | String fileUuid = ff.getString("file_uuid"); |
| | | FieldSetEntity fieldSetEntity = getBaseDao().getFieldSetEntity(CmnConst.PRODUCT_SYS_ATTACHMENTS, fileUuid, false); |
| | | //获取文件类型 |
| | | String fileName = fieldSetEntity.getString(CmnConst.FILE_NAME); |
| | | //判断是否为doc文件 |
| | | String fileType = fileName.substring(fileName.lastIndexOf(".") + 1); |
| | | if ("doc".equals(fileType)) { |
| | | //将doc文件转换为docx文件 |
| | | File f = file; |
| | | file = com.product.file.util.FileUtil.toDocx(file); |
| | | if (f != null) { |
| | | f.delete(); |
| | | } |
| | | } |
| | | List<File> fileList = new ArrayList<>(3); |
| | | if (!StringUtils.isEmpty(document_template)) { |
| | | fileList.add(fileManagerService.getFile(document_template)); |
| | | File file1 = fileManagerService.getFile(document_template); |
| | | //判断file1的文件类型 |
| | | if (file1.getName().substring(file1.getName().lastIndexOf(".") + 1).equals("doc")) { |
| | | //转换为docx |
| | | File docx = com.product.file.util.FileUtil.toDocx(file1); |
| | | FileUtil.del(file1); |
| | | file1 = docx; |
| | | } |
| | | fileList.add(file1); |
| | | fileList.add(file); |
| | | } else { |
| | | fileList.add(file); |
| | |
| | | if (!StringUtils.isEmpty(document_template_tail)) { |
| | | fileList.add(fileManagerService.getFile(document_template_tail)); |
| | | } |
| | | File mergeFile = MergeDoc.mergeDoc(fileList, Global.getSystemConfig("upload.file.temp.path", "./attachment/temp") + |
| | | File.separator + "nest_red_document_" + IdUtil.randomUUID() + "_" + ff.getString("file_uuid")); |
| | | File mergeFile = MergeDoc.mergeDoc(fileList, Global.getSystemConfig("upload.file.temp.path", "./attachment/temp") + File.separator + "nest_red_document_" + IdUtil.randomUUID() + "_" + ff.getString("file_uuid")); |
| | | if (mergeFile != null && mergeFile.isFile()) { |
| | | if ("doc".equals(fileType)) { |
| | | //将docx文件转换为doc文件 |
| | | File f = mergeFile; |
| | | mergeFile = com.product.file.util.FileUtil.toDoc(f); |
| | | if (f != null) { |
| | | f.delete(); |
| | | } |
| | | } |
| | | HashMap<String, File> objectObjectHashMap = new HashMap<>(); |
| | | objectObjectHashMap.put("mergeFile", mergeFile); |
| | | uploadFile(ff.getString("file_uuid"), objectObjectHashMap); |
| | | } else { |
| | | throw new BaseException(FileCode.NEST_RED_DOCUMENT_FAIL); |
| | | } |
| | | fileList.forEach(FileUtil::del); |
| | | } catch (BaseException e) { |
| | | throw e; |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | throw new BaseException(FileCode.NEST_RED_DOCUMENT_FAIL); |
| | | } |
| | | } |
| | |
| | | return; |
| | | } |
| | | //正则匹配redis中的key |
| | | try (Jedis jedis = RedisUtil.getJedis()) { |
| | | Set<String> keys = jedis.keys(this.DOCUMENT_EDIT_KEY + "*-" + userId); |
| | | if (keys != null && keys.size() > 0) { |
| | | //清空redis |
| | | RedisUtil.del(keys.toArray(new String[keys.size()])); |
| | | Set<byte[]> keys = RedisUtil.keys(this.DOCUMENT_EDIT_KEY + "*-" + userId); |
| | | if (keys != null && keys.size() > 0) { |
| | | String[] strKeys = new String[keys.size()]; |
| | | int i = 0; |
| | | for (byte[] key : keys) { |
| | | strKeys[i++] = new String(key); |
| | | } |
| | | //清空redis |
| | | RedisUtil.del(strKeys); |
| | | } |
| | | } |
| | | |
| | |
| | | throw new BaseException(FileCode.GET_FILE_RECORD_FAIL); |
| | | } |
| | | String key = this.DOCUMENT_EDIT_KEY + fileUuid + "-" + userId; |
| | | try (Jedis jedis = RedisUtil.getJedis()) { |
| | | //模糊匹配key |
| | | Set<byte[]> keyBytes = jedis.keys((this.DOCUMENT_EDIT_KEY + fileUuid + "-*").getBytes(StandardCharsets.UTF_8)); |
| | | if (!CollectionUtil.isEmpty(keyBytes)) { |
| | | Set<String> keys = keyBytes.stream().map(item -> new String(item, StandardCharsets.UTF_8)).collect(Collectors.toSet()); |
| | | boolean remove = keys.remove(this.DOCUMENT_EDIT_KEY + fileUuid + "-" + userId); |
| | | if (keys != null && keys.size() > 0) { |
| | | //正在被编辑 |
| | | String existsKey = keys.toArray(new String[]{})[0]; |
| | | //这里会抛出正在编辑的异常 |
| | | throwBeingEditDocument(existsKey.substring(existsKey.lastIndexOf("-")+1)); |
| | | } else if (remove) { |
| | | RedisUtil.setOutTime(key, getExpirationTime()); |
| | | return; |
| | | } |
| | | //模糊匹配key |
| | | Set<byte[]> keyBytes = RedisUtil.keys((this.DOCUMENT_EDIT_KEY + fileUuid + "-*").getBytes(StandardCharsets.UTF_8)); |
| | | if (!CollectionUtil.isEmpty(keyBytes)) { |
| | | Set<String> keys = keyBytes.stream().map(item -> new String(item, StandardCharsets.UTF_8)).collect(Collectors.toSet()); |
| | | boolean remove = keys.remove(this.DOCUMENT_EDIT_KEY + fileUuid + "-" + userId); |
| | | if (keys != null && keys.size() > 0) { |
| | | //正在被编辑 |
| | | String existsKey = keys.toArray(new String[]{})[0]; |
| | | //这里会抛出正在编辑的异常 |
| | | throwBeingEditDocument(existsKey.substring(existsKey.lastIndexOf("-") + 1)); |
| | | } else if (remove) { |
| | | RedisUtil.setOutTime(key, getExpirationTime()); |
| | | return; |
| | | } |
| | | |
| | | Map<String, Object> params = new HashMap<>(); |
| | | params.put("userId", userId); |
| | | params.put("fileUuid", fileUuid); |
| | | params.put("uniqueKey", IdUtil.randomUUID()); |
| | | RedisUtil.set(key, params); |
| | | RedisUtil.setOutTime(key, getExpirationTime()); |
| | | } |
| | | |
| | | Map<String, Object> params = new HashMap<>(); |
| | | params.put("userId", userId); |
| | | params.put("fileUuid", fileUuid); |
| | | params.put("uniqueKey", IdUtil.randomUUID()); |
| | | RedisUtil.set(key, params); |
| | | RedisUtil.setOutTime(key, getExpirationTime()); |
| | | } |
| | | |
| | | /** |