feat(文档拆分): 条目信息、复制、批量复制

This commit is contained in:
yjz
2023-10-16 17:23:50 +08:00
parent d1e7204655
commit 1161a13be0
5 changed files with 148 additions and 4 deletions
@@ -7,6 +7,7 @@ import com.jero.modules.laws.documenttool.common.DocumentSplitCommon;
import com.jero.modules.laws.documenttool.entity.DocumentSplitInfo;
import com.jero.modules.laws.documenttool.service.IDocumentSplitService;
import com.jero.modules.split.entity.SarFileSplitInfoEO;
import com.jero.modules.split.entity.SarFileSplitItemsValEO;
import com.jero.modules.split.service.ISarFileSplitInfoService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -17,6 +18,7 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
/**
@@ -120,6 +122,19 @@ public class DocumentSplitController {
return Result.OK(documentSplitService.queryDocumentSplitDetail(parameter));
}
/**
* 文档拆分详情-条目信息列表
* @param id
* @return Result<IPage<Map<String,Object>>>
*/
@AutoLog(value = "文档拆分详情-条目信息列表")
@ApiOperation(value = "文档拆分详情-条目信息列表")
@GetMapping("/queryItemsValList")
public Result<List<SarFileSplitItemsValEO>> queryItemsValList(String id) {
return Result.OK(documentSplitService.queryItemsValList(id));
}
/**
* 文档拆分详情-编辑
* @param parameter
@@ -184,4 +199,31 @@ public class DocumentSplitController {
documentSplitService.mergeDocumentSplitDetail(parameter);
return Result.OK("合并成功!");
}
/**
* 文档拆分详情-复制
* @param id
* @return
*/
@AutoLog(value = "文档拆分详情-复制")
@ApiOperation(value = "文档拆分详情-复制")
@GetMapping("/copyDocumentSplitDetail")
public Result<T> copyDocumentSplitDetail(String id) {
documentSplitService.copyDocumentSplitDetail(id);
return Result.OK("复制成功!");
}
/**
* 文档拆分详情-批量复制
* @param ids
* @return
*/
@AutoLog(value = "文档拆分详情-批量复制")
@ApiOperation(value = "文档拆分详情-批量复制")
@GetMapping("/copyBatchDocumentSplitDetail")
public Result<T> copyBatchDocumentSplitDetail(String ids) {
documentSplitService.copyBatchDocumentSplitDetail(ids);
return Result.OK("批量复制成功!");
}
}
@@ -103,4 +103,18 @@ public interface DocumentSplitMapper {
* @return
*/
int addBatchItemsVal(@Param("valList") List<SarFileSplitItemsValEO> valList);
/**
* 文档拆分详情通过id查询
* @param id
*/
Map<String, Object> queryLawsDocumentSplitById(@Param("id") String id);
/**
* 文档拆分详情-新增
* @param insertField
* @param insertValue
* @return
*/
int insertLawsDocumentSplit(@Param("insertField") String insertField, @Param("insertValue") String insertValue);
}
@@ -18,6 +18,11 @@
</foreach>
</insert>
<insert id="insertLawsDocumentSplit">
insert into laws_document_split(${insertField})
values (${insertValue})
</insert>
<delete id="sarFileSplitMenuDeleteByIdList">
delete from SAR_FILE_SPLIT_MENU
where id in
@@ -91,6 +96,12 @@
order by display_seq
</select>
<select id="queryLawsDocumentSplitById" resultType="java.util.Map">
select *
from laws_document_split
where id = #{id}
</select>
<update id="editDocumentSplitDetail">
UPDATE laws_document_split
SET ${updateSet}
@@ -3,6 +3,7 @@ package com.jero.modules.laws.documenttool.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jero.modules.laws.documenttool.entity.DocumentSplitInfo;
import com.jero.modules.split.entity.SarFileSplitInfoEO;
import com.jero.modules.split.entity.SarFileSplitItemsValEO;
import java.util.List;
import java.util.Map;
@@ -78,4 +79,23 @@ public interface IDocumentSplitService {
* @param parameter
*/
void deleteBatchDocumentSplitDetail(Map<String, Object> parameter);
/**
* 文档拆分详情-复制
* @param id
*/
void copyDocumentSplitDetail(String id);
/**
* 文档拆分详情-批量复制
* @param ids
*/
void copyBatchDocumentSplitDetail(String ids);
/**
* 文档拆分详情-条目信息列表
* @param itemId
* @return
*/
List<SarFileSplitItemsValEO> queryItemsValList(String itemId);
}
@@ -38,6 +38,7 @@ import org.jetbrains.annotations.NotNull;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors;
@@ -181,12 +182,12 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService {
updateSet.insert(0, updateByAndUpdateTime + ",");
updateSet.deleteCharAt(updateSet.length() - 1);
// where条件
String updateCondition = "id = '" + parameter.get("id") + "'";
String updateCondition = "id = '" + parameter.get(ID) + "'";
documentSplitMapper.editDocumentSplitDetail(updateSet.toString(), updateCondition);
// 条目信息更新
// 删除旧数据
documentSplitMapper.deleteItemsValByItemId((String) parameter.get("id"));
documentSplitMapper.deleteItemsValByItemId((String) parameter.get(ID));
// 添加新数据
documentSplitMapper.addBatchItemsVal(valList);
}
@@ -357,13 +358,69 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService {
documentSplitMapper.deleteBatchDocumentSplitDetail(updateCondition);
}
@Override
public void copyDocumentSplitDetail(String id) {
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
// 查询数据
Map<String, Object> resultMap = documentSplitMapper.queryLawsDocumentSplitById(id);
// 字段名
StringBuilder fieldsBuilder = new StringBuilder();
// 字段值
StringBuilder valuesBuilder = new StringBuilder();
Date date = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String format = dateFormat.format(date);
String newItemValId = UUID.randomUUID().toString().replace("-", "");
resultMap.put(ID, newItemValId);
resultMap.put("create_by", loginUser.getUsername());
resultMap.put("create_time", format);
resultMap.put("update_by", loginUser.getUsername());
resultMap.put("update_time", format);
// 字段名和值
manageData(resultMap, fieldsBuilder, valuesBuilder);
documentSplitMapper.insertLawsDocumentSplit(fieldsBuilder.toString(), valuesBuilder.toString());
}
@Override
public void copyBatchDocumentSplitDetail(String ids) {
String[] idsArr = ids.split(",");
for (String id : idsArr) {
copyDocumentSplitDetail(id);
}
}
@Override
public List<SarFileSplitItemsValEO> queryItemsValList(String itemId) {
List<SarFileSplitItemsValEO> sarFileSplitItemsValEOS = documentSplitMapper.queryItemsValByItemId(itemId);
if (!Objects.isNull(sarFileSplitItemsValEOS) && !sarFileSplitItemsValEOS.isEmpty()){
for (SarFileSplitItemsValEO sarFileSplitItemsValEO : sarFileSplitItemsValEOS) {
String imgPath = sarFileSplitItemsValEO.getItemContent();
if (DocumentSplitCommon.IMG.equals(sarFileSplitItemsValEO.getType()) && org.apache.commons.lang.StringUtils.isNotEmpty(imgPath)) {
String imgName = imgPath.substring(imgPath.lastIndexOf("/") + 1);
sarFileSplitItemsValEO.setImgName(imgName);
}
}
}
return sarFileSplitItemsValEOS;
}
private void manageData(Map<String, Object> resultMap, StringBuilder fieldsBuilder, StringBuilder valuesBuilder) {
// 所有key(字段名)
resultMap.forEach((k, v) -> {
fieldsBuilder.append(k).append(",");
valuesBuilder.append("'").append(v).append("'").append(",");
});
fieldsBuilder.deleteCharAt(fieldsBuilder.length() - 1);
valuesBuilder.deleteCharAt(valuesBuilder.length() - 1);
}
private String mergeData(List<Map<String, Object>> listMap) {
StringBuilder stringBuilder = new StringBuilder();
// 合并数据(合并每个key对应的value)
for (Map<String, Object> map : listMap) {
String num = (String) map.get(ITEM_NUM);
String content = (String) map.get(ITEM_CONTENT);
stringBuilder.append("<p>").append(num).append("<p>").append(content);
stringBuilder.append(content);
}
return stringBuilder.toString();
}