From 2bb20ba2b0d195b690097739068d0cb7129bf8eb Mon Sep 17 00:00:00 2001 From: yjz <3131811435@qq.com> Date: Thu, 19 Oct 2023 00:34:27 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E6=96=87=E6=A1=A3=E6=8B=86=E5=88=86):=20?= =?UTF-8?q?=E5=8F=91=E5=B8=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/DocumentSplitCommon.java | 7 +- .../controller/DocumentSplitController.java | 14 +++ .../entity/SarFileSplitItemsVal.java | 70 +++++++++++++++ .../documenttool/entity/SarFileSplitMenu.java | 70 +++++++++++++++ .../mapper/DocumentSplitMapper.java | 48 ++++++++++ .../mapper/xml/DocumentSplitMapper.xml | 50 +++++++++++ .../service/IDocumentSplitService.java | 7 ++ .../impl/DocumentSplitServiceImpl.java | 90 ++++++++++++++++++- 8 files changed, 353 insertions(+), 3 deletions(-) create mode 100644 laws-modules/src/main/java/com/jero/modules/laws/documenttool/entity/SarFileSplitItemsVal.java create mode 100644 laws-modules/src/main/java/com/jero/modules/laws/documenttool/entity/SarFileSplitMenu.java diff --git a/laws-modules/src/main/java/com/jero/modules/laws/documenttool/common/DocumentSplitCommon.java b/laws-modules/src/main/java/com/jero/modules/laws/documenttool/common/DocumentSplitCommon.java index 3b3fd063..9fb9b580 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/documenttool/common/DocumentSplitCommon.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/documenttool/common/DocumentSplitCommon.java @@ -73,8 +73,13 @@ public class DocumentSplitCommon { */ public static final String TABLE = "TABLE"; /** - * 条目类型 TEXT:文本, IMG:图片, TABLE:表格, INTERPRETATION:解读 + * 拆分状态 1:编辑中 2:已发布 */ + public static final String SPLIT_STATUS1 = "1"; + /** + * 拆分状态 1:编辑中 2:已发布 + */ + public static final String SPLIT_STATUS2 = "2"; public static final String INTERPRETATION = "interpretation"; public static final String MEG_DEL = "删除成功!"; diff --git a/laws-modules/src/main/java/com/jero/modules/laws/documenttool/controller/DocumentSplitController.java b/laws-modules/src/main/java/com/jero/modules/laws/documenttool/controller/DocumentSplitController.java index af822461..2e90326a 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/documenttool/controller/DocumentSplitController.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/documenttool/controller/DocumentSplitController.java @@ -99,6 +99,20 @@ public class DocumentSplitController { return Result.OK("操作成功!"); } + /** + * 发布 + * + * @param parameter + * @return + */ + @AutoLog(value = "文档拆分-发布") + @ApiOperation(value="文档拆分-发布", notes="文档拆分-发布") + @PostMapping(value = "/publish") + public Result publish(@RequestBody Map parameter) { + documentSplitService.publish(parameter); + return Result.OK("发布成功!"); + } + /** * 通过id删除 * diff --git a/laws-modules/src/main/java/com/jero/modules/laws/documenttool/entity/SarFileSplitItemsVal.java b/laws-modules/src/main/java/com/jero/modules/laws/documenttool/entity/SarFileSplitItemsVal.java new file mode 100644 index 00000000..56d42e7b --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/laws/documenttool/entity/SarFileSplitItemsVal.java @@ -0,0 +1,70 @@ +package com.jero.modules.laws.documenttool.entity; + +import lombok.Data; + +import java.util.Date; +import java.io.Serializable; + +/** + * 条目信息 + * + * @author yjz + * @since 2023-10-19 00:07:32 + */ +@Data +public class SarFileSplitItemsVal implements Serializable { + private static final long serialVersionUID = -57474928779384395L; + /** + * 主键 + */ + private String id; + /** + * 所属部门 + */ + private String sysOrgCode; + /** + * 条款id + */ + private String itemId; + /** + * 类型 + */ + private String type; + /** + * 条目内容 + */ + private String itemContent; + /** + * 排序 + */ + private Integer displaySeq; + /** + * 是否有效 + */ + private Integer validFlag; + /** + * 图片 + */ + private String imgName; + /** + * 用于前端数组排序 + */ + private Integer indexItem; + /** + * 创建日期 + */ + private Date creationTime; + /** + * 更新人 + */ + private String modifyUser; + /** + * 更新日期 + */ + private Date modifyTime; + /** + * 创建人 + */ + private String creationUser; +} + diff --git a/laws-modules/src/main/java/com/jero/modules/laws/documenttool/entity/SarFileSplitMenu.java b/laws-modules/src/main/java/com/jero/modules/laws/documenttool/entity/SarFileSplitMenu.java new file mode 100644 index 00000000..cef4cdfe --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/laws/documenttool/entity/SarFileSplitMenu.java @@ -0,0 +1,70 @@ +package com.jero.modules.laws.documenttool.entity; + +import lombok.Data; + +import java.util.Date; +import java.io.Serializable; + +/** + * 目录 + * + * @author yjz + * @since 2023-10-18 22:21:48 + */ +@Data +public class SarFileSplitMenu implements Serializable { + private static final long serialVersionUID = 214967115522705210L; + /** + * 主键 + */ + private String id; + /** + * 所属部门 + */ + private String sysOrgCode; + /** + * 信息记录表id + */ + private String infoId; + /** + * 目录名称 + */ + private String name; + /** + * 父节点id + */ + private String parentId; + /** + * 排序序号 + */ + private Integer displaySeq; + /** + * 是否有效 + */ + private Integer validFlag; + /** + * 备注 + */ + private String remarks; + /** + * 条款名称 + */ + private String itemName; + /** + * 创建人 + */ + private String creationUser; + /** + * 创建日期 + */ + private Date creationTime; + /** + * 更新人 + */ + private String modifyUser; + /** + * 更新日期 + */ + private Date modifyTime; +} + diff --git a/laws-modules/src/main/java/com/jero/modules/laws/documenttool/mapper/DocumentSplitMapper.java b/laws-modules/src/main/java/com/jero/modules/laws/documenttool/mapper/DocumentSplitMapper.java index 30c45c98..415301ad 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/documenttool/mapper/DocumentSplitMapper.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/documenttool/mapper/DocumentSplitMapper.java @@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Constants; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.jero.modules.laws.documenttool.entity.DocumentSplitInfo; +import com.jero.modules.laws.documenttool.entity.SarFileSplitItemsVal; +import com.jero.modules.laws.documenttool.entity.SarFileSplitMenu; import com.jero.modules.split.entity.SarFileSplitInfoEO; import com.jero.modules.split.entity.SarFileSplitItemsValEO; import org.apache.ibatis.annotations.Param; @@ -123,4 +125,50 @@ public interface DocumentSplitMapper { * @param itemIds */ int deleteItemsValByItemIds(@Param("itemIds") String itemIds, @Param("type") String type); + + /** + * 文档拆分根据id查询 + * @param id + */ + DocumentSplitInfo queryDocumentSplitInfoById(String id); + + /** + * 文档拆分新增 + * @param newInfo + */ + int insertDocumentSplitInfo(DocumentSplitInfo newInfo); + + /** + * 目录根据id查询 + * @param infoId + * @return + */ + List querySarFileSplitMenuByInfoId(String infoId); + + /** + * 目录批量新增 + * @param oldMenuList + * @return + */ + int insertBatchSarFileSplitMenuByInfoId(@Param("entities") List oldMenuList); + + /** + * 文档拆分详情根据infoid查询 + * @param infoId + * @return + */ + List> queryLawsDocumentSplitByInfoId(String infoId); + + /** + * 条目信息根据itemId查询 + * @param itemId + * @return + */ + List querySarFileSplitItemsValByItemId(String itemId); + + /** + * 条目信息批量新增 + * @param sarFileSplitItemsVal + */ + int insertSarFileSplitItemsVal(@Param("entities") List sarFileSplitItemsVal); } diff --git a/laws-modules/src/main/java/com/jero/modules/laws/documenttool/mapper/xml/DocumentSplitMapper.xml b/laws-modules/src/main/java/com/jero/modules/laws/documenttool/mapper/xml/DocumentSplitMapper.xml index e6620d90..3c371206 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/documenttool/mapper/xml/DocumentSplitMapper.xml +++ b/laws-modules/src/main/java/com/jero/modules/laws/documenttool/mapper/xml/DocumentSplitMapper.xml @@ -23,6 +23,27 @@ values (${insertValue}) + + insert into sar_file_split_info(create_by, create_time, update_by, update_time, sys_org_code, serial_number, title, file_type, file_name, split_result, file_id, connect_id, title_en, author, split_status, standard_id, del_flag) + values (#{createBy}, #{createTime}, #{updateBy}, #{updateTime}, #{sysOrgCode}, #{serialNumber}, #{title}, #{fileType}, #{fileName}, #{splitResult}, #{fileId}, #{connectId}, #{titleEn}, #{author}, #{splitStatus}, #{standardId}, #{delFlag}) + + + + insert into sar_file_split_menu(sys_org_code, info_id, name, parent_id, display_seq, valid_flag, remarks, item_name, creation_user, creation_time, modify_user, modify_time) + values + + (#{entity.sysOrgCode}, #{entity.infoId}, #{entity.name}, #{entity.parentId}, #{entity.displaySeq}, #{entity.validFlag}, #{entity.remarks}, #{entity.itemName}, #{entity.creationUser}, #{entity.creationTime}, #{entity.modifyUser}, #{entity.modifyTime}) + + + + + insert into sar_file_split_items_val(sys_org_code, item_id, type, item_content, display_seq, valid_flag, img_name, index_item, creation_time, modify_user, modify_time, creation_user) + values + + (#{entity.sysOrgCode}, #{entity.itemId}, #{entity.type}, #{entity.itemContent}, #{entity.displaySeq}, #{entity.validFlag}, #{entity.imgName}, #{entity.indexItem}, #{entity.creationTime}, #{entity.modifyUser}, #{entity.modifyTime}, #{entity.creationUser}) + + + delete from SAR_FILE_SPLIT_MENU where id in @@ -138,6 +159,35 @@ where id = #{id} + + + + + + + + UPDATE laws_document_split SET ${updateSet} diff --git a/laws-modules/src/main/java/com/jero/modules/laws/documenttool/service/IDocumentSplitService.java b/laws-modules/src/main/java/com/jero/modules/laws/documenttool/service/IDocumentSplitService.java index 70dd17e1..623b96aa 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/documenttool/service/IDocumentSplitService.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/documenttool/service/IDocumentSplitService.java @@ -136,4 +136,11 @@ public interface IDocumentSplitService { * @return */ LawsDocumentSplitView queryView(Map parameter); + + /** + * 文档拆分-发布 + * @param parameter + * @return + */ + void publish(Map parameter); } diff --git a/laws-modules/src/main/java/com/jero/modules/laws/documenttool/service/impl/DocumentSplitServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/laws/documenttool/service/impl/DocumentSplitServiceImpl.java index 5ea61c00..20295894 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/documenttool/service/impl/DocumentSplitServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/documenttool/service/impl/DocumentSplitServiceImpl.java @@ -17,6 +17,8 @@ import com.jero.modules.laws.common.mapper.LawsCommonMapper; import com.jero.modules.laws.documenttool.common.DocumentSplitCommon; import com.jero.modules.laws.documenttool.entity.DocumentSplitInfo; import com.jero.modules.laws.documenttool.entity.LawsDocumentSplitView; +import com.jero.modules.laws.documenttool.entity.SarFileSplitItemsVal; +import com.jero.modules.laws.documenttool.entity.SarFileSplitMenu; import com.jero.modules.laws.documenttool.factory.ConditionMapFactory; import com.jero.modules.laws.documenttool.handler.impl.DateManyConditionImpl; import com.jero.modules.laws.documenttool.handler.impl.UniversalImpl; @@ -40,6 +42,7 @@ import com.jero.modules.system.service.ISysDictService; import com.jero.modules.tag.entity.LawsTag; import com.jero.modules.tag.enums.LawsFieldTypeEnum; import com.jero.modules.tag.enums.TableNameEnum; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.poi.hssf.usermodel.HSSFDataFormat; import org.apache.poi.ss.usermodel.*; @@ -49,6 +52,7 @@ import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.apache.shiro.SecurityUtils; import org.jetbrains.annotations.NotNull; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -69,6 +73,7 @@ import static java.net.URLEncoder.encode; */ @Service @Transactional +@Slf4j public class DocumentSplitServiceImpl implements IDocumentSplitService { private final DocumentSplitMapper documentSplitMapper; private final ISarFileSplitInfoService sarFileSplitInfoService; @@ -643,6 +648,87 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService { return lawsDocumentSplitView; } + @Override + public void publish(Map parameter) { + String id = (String) parameter.get(ID); + // 文档拆分信息(旧) + DocumentSplitInfo oldInfo = documentSplitMapper.queryDocumentSplitInfoById(id); + // 修改发布状态 + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(SarFileSplitInfoEO::getId, oldInfo.getId()); + updateWrapper.set(SarFileSplitInfoEO::getSplitStatus, DocumentSplitCommon.SPLIT_STATUS2); + sarFileSplitInfoService.update(updateWrapper); + // 文档拆分信息(新) + DocumentSplitInfo newInfo = new DocumentSplitInfo(); + BeanUtils.copyProperties(oldInfo, newInfo); + String uuId = UUID.randomUUID().toString().replace("-", ""); + newInfo.setId(uuId); + newInfo.setSplitStatus(DocumentSplitCommon.SPLIT_STATUS2); + // 新增数据 + documentSplitMapper.insertDocumentSplitInfo(newInfo); + + // 目录(旧) + List oldMenuList = documentSplitMapper.querySarFileSplitMenuByInfoId(id); + List oldMenuIdList = new ArrayList<>(); + List newMenuIdList = new ArrayList<>(); + for (SarFileSplitMenu sarFileSplitMenu : oldMenuList) { + oldMenuIdList.add(sarFileSplitMenu.getId()); + String newId = UUID.randomUUID().toString().replace("-", ""); + newMenuIdList.add(newId); + sarFileSplitMenu.setId(newId); + sarFileSplitMenu.setInfoId(newInfo.getId()); + + // 父子级关系处理 + oldMenuList.stream() + .filter(v -> Objects.equals(sarFileSplitMenu.getId(), v.getParentId())) + .peek(v -> v.setParentId(newId)).forEach(v -> log.info(v.getParentId())); + } + // 新增数据 + documentSplitMapper.insertBatchSarFileSplitMenuByInfoId(oldMenuList); + + // 文档拆分详情(旧) + List> oldLawsDocumentSplitList = documentSplitMapper.queryLawsDocumentSplitByInfoId(id); + /** + * List oldLawsDocumentSplitIdList = new ArrayList<>(); + * List newLawsDocumentSplitIdList = new ArrayList<>(); + */ + for (Map map : oldLawsDocumentSplitList) { + String oldId = (String) map.get(ID); + /** + * oldLawsDocumentSplitIdList.add(oldId); + */ + String newId = UUID.randomUUID().toString().replace("-", ""); + map.put(ID, newId); + /** + * newLawsDocumentSplitIdList.add(newId); + */ + map.put(INFO_ID, newInfo.getId()); + + // 旧目录id替换 + Optional optionalS = oldMenuIdList.stream().filter(v -> v.equals(map.get(MENU_ID))).findFirst(); + optionalS.ifPresent(v -> { + int index = oldMenuIdList.indexOf(v); + map.put(MENU_ID, newMenuIdList.get(index)); + }); + + List keyList = new ArrayList<>(map.keySet()); + List valueList = map.values().stream().map(o -> (String) o).collect(Collectors.toList()); + // 新增数据 + String insertField = "'" + String.join("','", keyList) + "'"; + String insertValue = "'" + String.join("','", valueList) + "'"; + documentSplitMapper.insertLawsDocumentSplit(insertField, insertValue); + + // 条目信息(旧) + List sarFileSplitItemsVal = documentSplitMapper.querySarFileSplitItemsValByItemId(oldId); + for (SarFileSplitItemsVal fileSplitItemsVal : sarFileSplitItemsVal) { + fileSplitItemsVal.setId(UUID.randomUUID().toString().replace("-", "")); + fileSplitItemsVal.setItemId(newId); + } + // 新增数据 + documentSplitMapper.insertSarFileSplitItemsVal(sarFileSplitItemsVal); + } + } + private void manageData(Map resultMap, StringBuilder fieldsBuilder, StringBuilder valuesBuilder) { // 所有key(字段名) resultMap.forEach((k, v) -> { @@ -684,9 +770,9 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService { List list = queryByList(documentSplitInfo); if(!list.isEmpty()){ if(LanguageEnum.CN.equals(MessageUtils.getLanguage())) { - throw new JeroBootException("不可重复拆分文件状态加标准号相同的数据!"); + throw new JeroBootException("每个文件类型只能拆分一次!"); }else{ - throw new JeroBootException("Non-repeatable split file status plus standard number the same data!"); + throw new JeroBootException("Each file type can only be split once!"); } } }