From 35dc96c08011ccd6b1d3d7f930979f536317ee72 Mon Sep 17 00:00:00 2001 From: zhn <947514737@qq.com> Date: Thu, 10 Mar 2022 20:44:29 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=87=E6=A1=A3=E5=BA=93--bud=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/constant/enums/IsMustEnum.java | 4 +- jero-boot/jero-boot-modules/pom.xml | 11 + .../entity/BussDocumentLibraryEO.java | 150 ---------- .../mapper/BussDocumentLibraryEOMapper.java | 3 + .../xml/BussDocumentLibraryEOMapper.xml | 12 + .../BussDocumentLibraryEOServiceImpl.java | 275 ++++++++++-------- .../modules/split/util/ExtractCallback.java | 77 +++++ .../jero/modules/split/util/FileRarUtils.java | 142 +++++++++ 8 files changed, 407 insertions(+), 267 deletions(-) create mode 100644 jero-boot/jero-boot-modules/src/main/java/com/jero/modules/split/util/ExtractCallback.java create mode 100644 jero-boot/jero-boot-modules/src/main/java/com/jero/modules/split/util/FileRarUtils.java diff --git a/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/constant/enums/IsMustEnum.java b/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/constant/enums/IsMustEnum.java index e2729e565..29a442b80 100644 --- a/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/constant/enums/IsMustEnum.java +++ b/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/constant/enums/IsMustEnum.java @@ -7,8 +7,8 @@ package com.jero.common.constant.enums; * @auth zhn */ public enum IsMustEnum { - YES("是","0"), - NO("否","1"); + YES("是","1"), + NO("否","0"); String name; diff --git a/jero-boot/jero-boot-modules/pom.xml b/jero-boot/jero-boot-modules/pom.xml index e8c7f0a7b..ebfa573dd 100644 --- a/jero-boot/jero-boot-modules/pom.xml +++ b/jero-boot/jero-boot-modules/pom.xml @@ -131,6 +131,17 @@ easypoi-annotation 3.2.0 + + com.github.junrar + junrar + 3.0.0 + + + net.sf.sevenzipjbinding + sevenzipjbinding + 16.02-2.01 + + diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/entity/BussDocumentLibraryEO.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/entity/BussDocumentLibraryEO.java index 83a595e59..85b83c9b4 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/entity/BussDocumentLibraryEO.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/entity/BussDocumentLibraryEO.java @@ -35,154 +35,4 @@ public class BussDocumentLibraryEO implements Serializable { @ApiModelProperty(value = "主键") private java.lang.String id; - /**创建人*/ - @ApiModelProperty(value = "创建人") - private java.lang.String createBy; - - /**创建日期*/ - @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") - @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") - @ApiModelProperty(value = "创建日期") - private java.util.Date createTime; - - /**更新人*/ - @ApiModelProperty(value = "更新人") - private java.lang.String updateBy; - - /**更新日期*/ - @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") - @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") - @ApiModelProperty(value = "更新日期") - private java.util.Date updateTime; - - /**所属部门*/ - @ApiModelProperty(value = "所属部门") - private java.lang.String sysOrgCode; - - /**适用地区*/ - @Excel(name = "适用地区", width = 15) - @ApiModelProperty(value = "适用地区") - private java.lang.String region; - - /**类别*/ - @Excel(name = "类别", width = 15) - @ApiModelProperty(value = "类别") - private java.lang.String type; - - /**标准体系*/ - @Excel(name = "标准体系", width = 15) - @ApiModelProperty(value = "标准体系") - private java.lang.String standardSystem; - - /**状态*/ - @Excel(name = "状态", width = 15) - @ApiModelProperty(value = "状态") - private java.lang.String state; - - /**适用车型*/ - @Excel(name = "适用车型", width = 15) - @ApiModelProperty(value = "适用车型") - private java.lang.String carType; - - /**能源种类*/ - @Excel(name = "能源种类", width = 15) - @ApiModelProperty(value = "能源种类") - private java.lang.String energyType; - - /**适用范围*/ - @Excel(name = "适用范围", width = 15) - @ApiModelProperty(value = "适用范围") - private java.lang.String applyScope; - - /**功能领域*/ - @Excel(name = "功能领域", width = 15) - @ApiModelProperty(value = "功能领域") - @Dict(dicCode = "functional_domain") - private java.lang.String functionTerritory; - - /**技术领域*/ - @Excel(name = "技术领域", width = 15) - @Dict(dicCode = "technology_territory") - @ApiModelProperty(value = "技术领域") - private java.lang.String technologyTerritory; - - /**编号*/ - @Excel(name = "编号", width = 15) - @ApiModelProperty(value = "编号") - private java.lang.String serialNumber; - - /**标题*/ - @Excel(name = "标题", width = 15) - @ApiModelProperty(value = "标题") - private java.lang.String title; - - /**发布日期*/ - @Excel(name = "发布日期", width = 15, format = "yyyy-MM-dd") - @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") - @DateTimeFormat(pattern="yyyy-MM-dd") - @ApiModelProperty(value = "发布日期") - private java.util.Date issueTime; - - /**标准实施日期*/ - @Excel(name = "标准实施日期", width = 15, format = "yyyy-MM-dd") - @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") - @DateTimeFormat(pattern="yyyy-MM-dd") - @ApiModelProperty(value = "标准实施日期") - private java.util.Date implementTime; - - /**代替标准*/ - @Excel(name = "代替标准", width = 15) - @ApiModelProperty(value = "代替标准") - private java.lang.String replaceStandard; - - /**被代替标准*/ - @Excel(name = "被代替标准", width = 15) - @ApiModelProperty(value = "被代替标准") - private java.lang.String replacedStandard; - - /**描述*/ - @Excel(name = "描述", width = 15) - @ApiModelProperty(value = "描述") - private java.lang.String description; - - /**对应标准*/ - @Excel(name = "对应标准", width = 15) - @ApiModelProperty(value = "对应标准") - private java.lang.String correspondingStandard; - - /**测试程序*/ - @Excel(name = "测试程序", width = 15) - @ApiModelProperty(value = "测试程序") - private java.lang.String testProgram; - - /**发布稿(必读)*/ - @Excel(name = "发布稿(必读)", width = 15) - @ApiModelProperty(value = "发布稿(必读)") - private java.lang.String releaseDraft; - - /**增补件(必读)*/ - @Excel(name = "增补件(必读)", width = 15) - @ApiModelProperty(value = "增补件(必读)") - private java.lang.String supplement; - - /**报批稿*/ - @Excel(name = "报批稿", width = 15) - @ApiModelProperty(value = "报批稿") - private java.lang.String approvalDraft; - - /**征求意见稿*/ - @Excel(name = "征求意见稿", width = 15) - @ApiModelProperty(value = "征求意见稿") - private java.lang.String exposureDraft; - - /**相关资料*/ - @Excel(name = "相关资料", width = 15) - @ApiModelProperty(value = "相关资料") - private java.lang.String datum; - - /**预警标识*/ - @Excel(name = "预警标识", width = 15) - @ApiModelProperty(value = "预警标识") - private java.lang.String warnFlag; - } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/mapper/BussDocumentLibraryEOMapper.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/mapper/BussDocumentLibraryEOMapper.java index 0f90c43a9..d0264dcf4 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/mapper/BussDocumentLibraryEOMapper.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/mapper/BussDocumentLibraryEOMapper.java @@ -81,4 +81,7 @@ public interface BussDocumentLibraryEOMapper extends BaseMapper> getListBySerialNumber(@Param("serialNumbers") String serialNumbers); + List> selectMapsAll(@Param("ids") String ids); + + } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/mapper/xml/BussDocumentLibraryEOMapper.xml b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/mapper/xml/BussDocumentLibraryEOMapper.xml index a8b0524f0..f98a55e3e 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/mapper/xml/BussDocumentLibraryEOMapper.xml +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/mapper/xml/BussDocumentLibraryEOMapper.xml @@ -82,4 +82,16 @@ + + + diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/service/impl/BussDocumentLibraryEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/service/impl/BussDocumentLibraryEOServiceImpl.java index 2c1ee4f8c..9c2be3699 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/service/impl/BussDocumentLibraryEOServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/service/impl/BussDocumentLibraryEOServiceImpl.java @@ -164,27 +164,72 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl ids) { + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); //字段属性 List fieldList = onlCgformFieldService.getFieldList(ModuleEnum.DOCUMENT_LIBRARY.getValue()); //文件类型字段 List fieldFileList = fieldList.stream().filter(e -> FieldTypeEnum.FILE.getValue().equals(e.getFieldShowType())).collect(Collectors.toList()); //删除文件 - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.in(BussDocumentLibraryEO::getId, ids); - List> mapList = bussDocumentLibraryEOMapper.selectMaps(lambdaQueryWrapper); + List> mapList = bussDocumentLibraryEOMapper.selectMapsAll(StringUtils.join(ids,",")); + + List connectIdList = new ArrayList<>(); for (OnlCgformField onlCgformField : fieldFileList) { - String connectId = (String) mapList.get(0).get(onlCgformField.getDbFieldName()); - if (StringUtils.isNotBlank(connectId)) { - connectIdList.add(connectId); + for (Map map : mapList) { + String connectId = (String) map.get(onlCgformField.getDbFieldName()); + if (StringUtils.isNotBlank(connectId)) { + connectIdList.add(connectId); + } } } //删除文件 iOSSFileService.deleteByConnectIdList(connectIdList); //删除文档库数据 removeByIds(ids); + //订阅用户发送消息 + //订阅的文档 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.in(OnlCgformSubscribe::getDocumentId, ids); + List onlCgformSubscribeList = iOnlCgformSubscribeService.list(wrapper); + //订阅的文档id + List documentIds = onlCgformSubscribeList.stream().map(OnlCgformSubscribe::getDocumentId).collect(Collectors.toList()); + List serialNumberList = new ArrayList<>(); + StringBuilder sb = new StringBuilder(); + for (Map map : mapList) { + if(documentIds.size() != 0 && documentIds.contains((String) map.get("id"))){ + String id = (String) map.get("id"); + String serialNumber = (String) map.get("serial_number"); + String title = (String) map.get("title"); + serialNumberList.add(serialNumber); + + String href = "" + serialNumber + ","; + sb.append(href); + } + } + String sbStr = ""; + if (ObjectUtils.isNotEmpty(sb)) { + sbStr = sb.substring(0, sb.length() - 1); + } + + List userNameList = new ArrayList<>(); + if (onlCgformSubscribeList.size() != 0) { + for (OnlCgformSubscribe onlCgformSubscribe : onlCgformSubscribeList) { + userNameList.add(onlCgformSubscribe.getCreateBy()); + } + List userList = sysUserMapper.getUserListByNames(StringUtils.join(userNameList, ",")); + List userIdList = userList.stream().map(SysUser::getId).collect(Collectors.toList()); + + String content = sysUser.getRealname() + "删除了" + StringUtils.join(serialNumberList,",") + "请知晓"; + String contentInfo = sysUser.getRealname() + "删除了" + sbStr + "请知晓"; + //封装消息的实体类 + SysAnnouncement sysAnnouncement = getSysAnnouncement(userIdList, content, contentInfo); + sysAnnouncementService.saveAnnouncement(sysAnnouncement); + sendWebsocket(StringUtils.join(serialNumberList,","), StringUtils.join(serialNumberList,",")); + } } /** @@ -296,8 +341,6 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl fieldList = onlCgformFieldService.getFieldList(flag); //过滤出字段为树形结构的 - //TODO 未使用的删掉就完了 - List onlCgformFieldTree = fieldList.stream().filter(e -> FieldTypeEnum.TREE.getValue().equals(e.getFieldShowType())).collect(Collectors.toList()); if (fieldList.size() != 0) { //过滤出表单字段(is_show_form-->表单是否显示0否 1是) @@ -351,9 +394,9 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(BussDocumentLibraryEO::getId, id); //通过id查询数据 - List> dataList = bussDocumentLibraryEOMapper.selectMaps(queryWrapper); + List> dataList = bussDocumentLibraryEOMapper.selectMapsAll(id);; //查询所有 - List> mapList = bussDocumentLibraryEOMapper.selectMaps(null); + List> mapList = bussDocumentLibraryEOMapper.selectMapsAll(null); //对应标准id String correspondingStandard = (String) dataList.get(0).get("corresponding_standard"); //代替标准id @@ -433,11 +476,9 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl> getInfoById(String id, String cut) { //通过id查询数据 - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(BussDocumentLibraryEO::getId, id); - List> dataList = bussDocumentLibraryEOMapper.selectMaps(queryWrapper); + List> dataList = bussDocumentLibraryEOMapper.selectMapsAll(id); //查询所有 - List> mapList = bussDocumentLibraryEOMapper.selectMaps(null); + List> mapList = bussDocumentLibraryEOMapper.selectMapsAll(null); //原始对应标准,代替标准,被代替标准(原始数据存的是iD) String correspondingStandardId = (String) dataList.get(0).get("corresponding_standard");//对应标准 @@ -681,8 +722,6 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl fieldList = onlCgformFieldService.getFieldList(ModuleEnum.DOCUMENT_LIBRARY.getValue()); //时间类型字段 - //TODO 未被使用删除即可 - List fieldDateList = fieldList.stream().filter(e -> FieldTypeEnum.DATE_SINGLE.getValue().equals(e.getFieldShowType())).collect(Collectors.toList()); //文件类型字段 List fieldFileList = fieldList.stream().filter(e -> FieldTypeEnum.FILE.getValue().equals(e.getFieldShowType())).collect(Collectors.toList()); //下拉单选或下拉多选 @@ -792,9 +831,7 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(BussDocumentLibraryEO::getId, id); - List> dataList = bussDocumentLibraryEOMapper.selectMaps(queryWrapper); + List> dataList = bussDocumentLibraryEOMapper.selectMapsAll(id); Map mapTemp = new HashMap<>(); mapCopy(map, mapTemp); @@ -817,8 +854,6 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl entry : map.entrySet()) { String key = entry.getKey(); Object value = entry.getValue(); @@ -891,9 +926,7 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.eq(BussDocumentLibraryEO::getId, (String) map.get("id")); - List> mapList = bussDocumentLibraryEOMapper.selectMaps(lambdaQueryWrapper); + List> mapList = bussDocumentLibraryEOMapper.selectMapsAll((String) map.get("id")); List connectIdList = new ArrayList<>(); for (OnlCgformField onlCgformField : fieldFileList) { @@ -944,8 +977,6 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl fieldFile = fieldFileList.stream().map(OnlCgformField::getDbFieldName).collect(Collectors.toList()); //下拉类型的字段 - //TODO 未被使用删除即可 - List fieldPull = fieldPullList.stream().map(OnlCgformField::getDbFieldName).collect(Collectors.toList()); //过滤出树形字段 List treeFieldList = fieldList.stream() .filter(e -> FieldTypeEnum.TREE.getValue().equals(e.getFieldShowType())) @@ -979,89 +1010,92 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl fields = fieldList.stream().filter(e -> e.getDbFieldName().equals(key)).collect(Collectors.toList()); - String dbFieldTxt = fields.get(0).getDbFieldTxt(); - if (value == null) { - value = ""; - } - for (Map.Entry entryTemp : mapTemp.entrySet()) { - String keyTemp = entryTemp.getKey(); - Object valueTemp = entryTemp.getValue(); - if (valueTemp == null) { - valueTemp = ""; + + if(fields.size() != 0){ + String dbFieldTxt = fields.get(0).getDbFieldTxt(); + if (value == null) { + value = ""; } - if (!"create_time".equals(key) && !"update_time".equals(key)) { - if (key.equals(keyTemp)) { - if (fieldDate.contains(key)) { - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); - if (ObjectUtils.isNotEmpty(value)) { - value = sdf.format(value); - } - if (ObjectUtils.isNotEmpty(valueTemp)) { - try { - valueTemp = sdf.format(sdf.parse((String) valueTemp)); - } catch (ParseException e) { - } - } - //处理时间类型字段 - if (ObjectUtils.isNotEmpty(value)) { - if (ObjectUtils.isNotEmpty(valueTemp) && !value.equals(valueTemp)) { - sb.append(dbFieldTxt + "由" + value + "改为" + valueTemp + ","); - } else if (ObjectUtils.isEmpty(valueTemp)) { - sb.append(dbFieldTxt + "由" + value + "改为空" + ","); - } - } else { - if (ObjectUtils.isNotEmpty(valueTemp)) { - sb.append(dbFieldTxt + "由空改为" + valueTemp + ","); - } - } - - } else if (fieldFile.contains(key)) { - //处理文件类型字段 - List fileNameList = new ArrayList<>(); - List fileNameListTemp = new ArrayList<>(); - //之前的文件 - if (ObjectUtils.isNotEmpty(value)) { - List fileInfos = iOSSFileService.getFileInfosByConnectId((String) value); - fileNameList = fileInfos.stream().map(OSSFile::getFileName).collect(Collectors.toList()); - } - //修改的文件 - if (ObjectUtils.isNotEmpty(valueTemp)) { - List fileInfosTemp = iOSSFileService.getFileInfos((String) valueTemp); - fileNameListTemp = fileInfosTemp.stream().map(OSSFile::getFileName).collect(Collectors.toList()); - } - - if (ObjectUtils.isNotEmpty(value)) { - boolean checkDiffrent = checkDiffrent(fileNameList, fileNameListTemp); - - if (fileNameListTemp.size() != 0 && !checkDiffrent) { - sb.append(dbFieldTxt + "由" + StringUtils.join(fileNameList, ",") + "改为" + StringUtils.join(fileNameListTemp, ",") + ","); - } else if (fileNameListTemp.size() == 0) { - sb.append(dbFieldTxt + "由" + StringUtils.join(fileNameList, ",") + "改为空" + ","); - } - } else { - if (fileNameListTemp.size() != 0) { - sb.append(dbFieldTxt + "由空改为" + StringUtils.join(fileNameListTemp, ",") + ","); - } - } - } else { - if ("replace_standard".equals(key)) { + for (Map.Entry entryTemp : mapTemp.entrySet()) { + String keyTemp = entryTemp.getKey(); + Object valueTemp = entryTemp.getValue(); + if (valueTemp == null) { + valueTemp = ""; + } + if (!"create_time".equals(key) && !"update_time".equals(key)) { + if (key.equals(keyTemp)) { + if (fieldDate.contains(key)) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); if (ObjectUtils.isNotEmpty(value)) { - value = getReplaceStandardName(value); + value = sdf.format(value); } if (ObjectUtils.isNotEmpty(valueTemp)) { - valueTemp = getReplaceStandardName(valueTemp); + try { + valueTemp = sdf.format(sdf.parse((String) valueTemp)); + } catch (ParseException e) { + } } - } - //其他类型 - if (ObjectUtils.isNotEmpty(value)) { - if (ObjectUtils.isNotEmpty(valueTemp) && !value.equals(valueTemp)) { - sb.append(dbFieldTxt + "由" + value + "改为" + valueTemp + ","); - } else if (ObjectUtils.isEmpty(valueTemp)) { - sb.append(dbFieldTxt + "由" + value + "改为空" + ","); + //处理时间类型字段 + if (ObjectUtils.isNotEmpty(value)) { + if (ObjectUtils.isNotEmpty(valueTemp) && !value.equals(valueTemp)) { + sb.append(dbFieldTxt + "由" + value + "改为" + valueTemp + ","); + } else if (ObjectUtils.isEmpty(valueTemp)) { + sb.append(dbFieldTxt + "由" + value + "改为空" + ","); + } + } else { + if (ObjectUtils.isNotEmpty(valueTemp)) { + sb.append(dbFieldTxt + "由空改为" + valueTemp + ","); + } + } + + } else if (fieldFile.contains(key)) { + //处理文件类型字段 + List fileNameList = new ArrayList<>(); + List fileNameListTemp = new ArrayList<>(); + //之前的文件 + if (ObjectUtils.isNotEmpty(value)) { + List fileInfos = iOSSFileService.getFileInfosByConnectId((String) value); + fileNameList = fileInfos.stream().map(OSSFile::getFileName).collect(Collectors.toList()); + } + //修改的文件 + if (ObjectUtils.isNotEmpty(valueTemp)) { + List fileInfosTemp = iOSSFileService.getFileInfos((String) valueTemp); + fileNameListTemp = fileInfosTemp.stream().map(OSSFile::getFileName).collect(Collectors.toList()); + } + + if (ObjectUtils.isNotEmpty(value)) { + boolean checkDiffrent = checkDiffrent(fileNameList, fileNameListTemp); + + if (fileNameListTemp.size() != 0 && !checkDiffrent) { + sb.append(dbFieldTxt + "由" + StringUtils.join(fileNameList, ",") + "改为" + StringUtils.join(fileNameListTemp, ",") + ","); + } else if (fileNameListTemp.size() == 0) { + sb.append(dbFieldTxt + "由" + StringUtils.join(fileNameList, ",") + "改为空" + ","); + } + } else { + if (fileNameListTemp.size() != 0) { + sb.append(dbFieldTxt + "由空改为" + StringUtils.join(fileNameListTemp, ",") + ","); + } } } else { - if (ObjectUtils.isNotEmpty(valueTemp)) { - sb.append(dbFieldTxt + "由空改为" + valueTemp + ","); + if ("replace_standard".equals(key)) { + if (ObjectUtils.isNotEmpty(value)) { + value = getReplaceStandardName(value); + } + if (ObjectUtils.isNotEmpty(valueTemp)) { + valueTemp = getReplaceStandardName(valueTemp); + } + } + //其他类型 + if (ObjectUtils.isNotEmpty(value)) { + if (ObjectUtils.isNotEmpty(valueTemp) && !value.equals(valueTemp)) { + sb.append(dbFieldTxt + "由" + value + "改为" + valueTemp + ","); + } else if (ObjectUtils.isEmpty(valueTemp)) { + sb.append(dbFieldTxt + "由" + value + "改为空" + ","); + } + } else { + if (ObjectUtils.isNotEmpty(valueTemp)) { + sb.append(dbFieldTxt + "由空改为" + valueTemp + ","); + } } } } @@ -1791,7 +1825,7 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl fileInfosList = iOSSFileService.getFileInfosByConnectId(StringUtils.join(valueList, ",")); for (OSSFile ossFile : fileInfosList) { String url = ossFile.getUrl(); - copyFile(url, fileNowPath + "/" + ossFile.getFileName()); + copyFile(url, fileNowPath + File.separator + ossFile.getFileName()); } } } @@ -2013,7 +2047,7 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl list = getWorkbookTitle((String) map.get("cut")); //创建临时文件夹 @@ -2086,7 +2120,7 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl dateMoreList = new LinkedList<>();//多选日期字段 List standardList = new LinkedList<>();//标准选择字段 for (Map map : addForm) { - if ("0".equals(map.get("field_must_input"))) { + if ("1".equals(map.get("field_must_input"))) { sb.append("*" + map.get("db_field_txt") + ","); } else { sb.append(map.get("db_field_txt") + ","); @@ -2362,14 +2396,21 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl { + if (!isFolder) { + File file = new File(ourDir + path); + save2File(file, data); + } + return data.length; + }; + } + + @Override + public void prepareOperation(ExtractAskMode arg0) { + } + + @Override + public void setOperationResult(ExtractOperationResult extractOperationResult) { + + } + + public static boolean save2File(File file, byte[] msg) { + File parent = file.getParentFile(); + if ((!parent.exists()) && (!parent.mkdirs())) { + return false; + } + try (OutputStream fos = new FileOutputStream(file, true);) { + fos.write(msg); + fos.flush(); + return true; + } catch (FileNotFoundException e) { + return false; + } catch (IOException e) { + return false; + } + } +} diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/split/util/FileRarUtils.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/split/util/FileRarUtils.java new file mode 100644 index 000000000..2c531729d --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/split/util/FileRarUtils.java @@ -0,0 +1,142 @@ +package com.jero.modules.split.util; + +import com.jero.common.exception.JeroBootException; +import net.sf.sevenzipjbinding.IInArchive; +import net.sf.sevenzipjbinding.SevenZip; +import net.sf.sevenzipjbinding.SevenZipException; +import net.sf.sevenzipjbinding.impl.RandomAccessFileInStream; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.RandomAccessFile; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description:文件压缩与解压工具类 + * @Auther: wcj + * @Date: 2021/7/31 11:40 + */ +public class FileRarUtils { + + + public static void main(String[] args) { + String rarDir = "E:\\DeskTop\\文档库1111111.rar"; + String outDir = "E:\\DeskTop\\rar"; + try (InputStream in = new FileInputStream(rarDir)){ + List list = fileUnRar(in, outDir, System.currentTimeMillis()); + System.out.println(list); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } +// ExpertUtils.fileUnRar(inputStream, upLoadPath, nowTime); + } + + /** + * 解压压缩包(rar) + * @param inputStream + * @param upLoadPath + * @param nowTime + * @return + */ + public static List fileUnRar(InputStream inputStream, String upLoadPath, long nowTime) { + String savePath = upLoadPath + File.separator + nowTime + File.separator + nowTime + ".rar"; + String ftpUpPath = upLoadPath + File.separator + nowTime + File.separator + "zipUnCompress"; + + try { + File saveFile = new File(savePath); + if (!saveFile.exists()) { + saveFile.getParentFile().mkdirs(); + saveFile.createNewFile(); + //首次写入获取 + } + try (FileOutputStream fos = new FileOutputStream(saveFile);) { + int len; + byte[] buffer = new byte[2048]; + while ((len = inputStream.read(buffer)) != -1) { + fos.write(buffer, 0, len); + } + } catch (Exception e) { + throw new JeroBootException(e); + } + + //压缩包解压 + FileRarUtils.rarUnCompress(savePath,ftpUpPath); + List files = new ArrayList<>(); + + //获取解压后的所有文件 + File foundFile = new File(ftpUpPath); + fundFile(foundFile, files); + + return files; + } catch (Exception e) { + throw new JeroBootException(e); + } + + } + + /** + * 文件递归查找 + * + * @param file + * @param result + * @return + */ + public static void fundFile(File file, List result) { + if (result == null) { + return; + } + File[] fs = file.listFiles(); + for (File f : fs) { + //若是目录,则递归打印该目录下的文件 + if (f.isDirectory()) { + fundFile(f, result); + } else { + String path = f.getPath(); + //若是文件,直接返回 + result.add(path); + } + } + } + /** + * 解压rar文件 + * + * @param rarDir 需要解压的文件 + * @param outDir 解压后的路径 + */ + public static void rarUnCompress(String rarDir, String outDir) { + // 第一个参数是需要解压的压缩包路径,第二个参数参考JdkAPI文档的RandomAccessFile + //r代表以只读的方式打开文本,也就意味着不能用write来操作文件 + try ( + RandomAccessFile randomAccessFile = new RandomAccessFile(rarDir, "r"); + IInArchive archive = SevenZip.openInArchive(null, // null - autodetect + new RandomAccessFileInStream(randomAccessFile));) { + + int[] in = new int[archive.getNumberOfItems()]; + for (int i = 0; i < in.length; i++) { + in[i] = i; + } + File file = new File(outDir); + if (!file.exists()) { + //如果不存在,创建 + file.mkdirs(); + } + archive.extract(in, false, new ExtractCallback(archive, outDir + "/")); + + } catch (FileNotFoundException e) { + throw new JeroBootException("文件没找到",e); + } catch (SevenZipException e) { + throw new JeroBootException("SevenZip文件异常",e); + } catch (IOException e) { + throw new JeroBootException("文件解析异常",e); + }catch (Exception e){ + throw new JeroBootException(e); + } + } +}