feat(文档拆分): 条文解读多个、条纹解读列表

This commit is contained in:
yjz
2023-10-17 17:57:44 +08:00
parent 7cb7fe871f
commit 9f5dcca53d
7 changed files with 104 additions and 14 deletions
@@ -5,8 +5,6 @@ import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import javax.validation.constraints.NotBlank;
/**
* @Author: 31318
* @Date: 2023/09/26/10:07
@@ -38,14 +36,12 @@ public class Oauth {
* 必需参数。授权码
*/
@ApiModelProperty(value = "必需参数。授权码")
@NotBlank(message = "授权码不能为空!")
private String code;
/**
* 重定向URI
*/
@ApiModelProperty(value = "重定向URI")
@NotBlank(message = "重定向URI不能为空!")
private String redirectUri;
/**
@@ -8,6 +8,14 @@ package com.jero.modules.laws.documenttool.common;
public class DocumentSplitCommon {
private DocumentSplitCommon(){
}
/**
* 是否null
*/
public static final String IF_NULL_BEGIN = " IFNULL( ";
/**
* 是否null
*/
public static final String IF_NULL_END = " ,'') ";
/**
* 日期格式化
*/
@@ -49,18 +57,22 @@ public class DocumentSplitCommon {
*/
public static final String LT = " <= ";
/**
* 条目类型 TEXT:文本, IMG:图片, TABLE:表格
* 条目类型 TEXT:文本, IMG:图片, TABLE:表格, INTERPRETATION:解读
*/
public static final String TEXT = "TEXT";
/**
* 条目类型
* 条目类型 TEXT:文本, IMG:图片, TABLE:表格, INTERPRETATION:解读
*/
public static final String IMG = "IMG";
/**
* 条目类型
* 条目类型 TEXT:文本, IMG:图片, TABLE:表格, INTERPRETATION:解读
*/
public static final String TABLE = "TABLE";
/**
* 条目类型 TEXT:文本, IMG:图片, TABLE:表格, INTERPRETATION:解读
*/
public static final String INTERPRETATION = "interpretation";
public static final String MEG_DEL = "删除成功!";
public static final String MEG_DEL_BATCH = "批量删除成功!";
}
}
@@ -148,6 +148,17 @@ public class DocumentSplitController {
return Result.OK(documentSplitService.queryItemsValList(id));
}
/**
* 文档拆分详情-条文解读列表
* @param id
* @return
*/
@AutoLog(value = "文档拆分详情-条文解读列表")
@ApiOperation(value = "文档拆分详情-条文解读列表")
@GetMapping("/queryInterpretationArticlesList")
public Result<List<SarFileSplitItemsValEO>> queryInterpretationArticlesList(String id) {
return Result.OK(documentSplitService.queryInterpretationArticlesList(id));
}
/**
* 文档拆分详情-编辑
@@ -70,14 +70,14 @@ public interface DocumentSplitMapper {
* @param itemId
* @return
*/
List<SarFileSplitItemsValEO> queryItemsValByItemId(@Param("itemId") String itemId);
List<SarFileSplitItemsValEO> queryItemsValByItemId(@Param("itemId") String itemId, @Param("type") String type);
/**
* 条目删除根据itemId
* @param itemId
* @return
*/
int deleteItemsValByItemId(@Param("itemId") String itemId);
int deleteItemsValByItemId(@Param("itemId") String itemId, @Param("type") String type);
/**
* 目录删除根据menuId集合
@@ -44,6 +44,17 @@
<delete id="deleteItemsValByItemId">
delete from sar_file_split_items_val
where item_id = #{itemId}
<choose>
<when test="type != null and type != ''">
and type = #{type}
</when>
<otherwise>
and type <![CDATA[<>]]> 'interpretation'
</otherwise>
</choose>
<if test="type != null and type != ''">
and type = #{type}
</if>
</delete>
<select id="queryByPage" resultType="com.jero.modules.laws.documenttool.entity.DocumentSplitInfo">
@@ -93,6 +104,14 @@
creation_time, modify_time, modify_user, display_seq,img_name,index_item
from SAR_FILE_SPLIT_ITEMS_VAL
where valid_flag = '0' and ITEM_ID = #{itemId}
<choose>
<when test="type != null and type != ''">
and type = #{type}
</when>
<otherwise>
and type <![CDATA[<>]]> 'interpretation'
</otherwise>
</choose>
order by display_seq
</select>
@@ -114,4 +114,11 @@ public interface IDocumentSplitService {
* @param response
*/
void downloadImportTemplate(HttpServletRequest request, HttpServletResponse response);
/**
* 文档拆分详情-条文解读列表
* @param itemId
* @return
*/
List<SarFileSplitItemsValEO> queryInterpretationArticlesList(String itemId);
}
@@ -75,6 +75,7 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService {
private static final String ITEM_NUM = "item_num";
private static final String ITEM_TITLE = "item_title";
private static final String ITEM_CONTENT = "item_content";
private static final String INTERPRETATION_ARTICLES = "interpretationArticles";
private static final String MENU_ID = "menu_id";
public DocumentSplitServiceImpl(DocumentSplitMapper documentSplitMapper,
ISarFileSplitInfoService sarFileSplitInfoService,
@@ -174,14 +175,23 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService {
.equals(v.getIsShowFormCreate())).collect(Collectors.toList());
List<LawsTag> finalFieldList = fieldList;
StringBuilder updateSet = new StringBuilder();
// 条目信息
List<SarFileSplitItemsValEO> valList = JSON.parseArray(JSON.toJSONString(parameter.get("itemValEOList")), SarFileSplitItemsValEO.class);
parameter.remove("itemValEOList");
// 条文解读
List<SarFileSplitItemsValEO> articlesList = JSON.parseArray(JSON.toJSONString(parameter.get("interpretationArticlesList")), SarFileSplitItemsValEO.class);
parameter.remove("interpretationArticlesList");
// 计数
parameter.forEach((k, v) ->{
// 条文内容拼接
if (ITEM_CONTENT.equals(k)){
v = itemContentJoin(valList, (String) parameter.get(ID));
}
// 条文解读
if (INTERPRETATION_ARTICLES.equals(k)){
v = articlesJoin(articlesList, (String) parameter.get(ID));
}
// 修改字段
String updateValue = getUpdateValue(finalFieldList, k, (String) v);
if (StringUtils.isNotBlank(updateValue)){
@@ -196,13 +206,41 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService {
String updateCondition = "id = '" + parameter.get(ID) + "'";
documentSplitMapper.editDocumentSplitDetail(updateSet.toString(), updateCondition);
//条文解读更新
// 删除旧数据
documentSplitMapper.deleteItemsValByItemId((String) parameter.get(ID), DocumentSplitCommon.INTERPRETATION);
// 添加新数据
documentSplitMapper.addBatchItemsVal(articlesList);
// 条目信息更新
// 删除旧数据
documentSplitMapper.deleteItemsValByItemId((String) parameter.get(ID));
documentSplitMapper.deleteItemsValByItemId((String) parameter.get(ID), "");
// 添加新数据
documentSplitMapper.addBatchItemsVal(valList);
}
private String articlesJoin(List<SarFileSplitItemsValEO> articlesList, String itemId) {
StringBuilder valContent = new StringBuilder();
int index = 0;
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
if (!Objects.isNull(articlesList) && !articlesList.isEmpty()){
for (SarFileSplitItemsValEO sarFileSplitItemsValEO : articlesList) {
index ++;
valContent.append("<p>").append(sarFileSplitItemsValEO.getItemContent()).append("</p>");
sarFileSplitItemsValEO.setId(UUIDUtils.randomUUID20());
sarFileSplitItemsValEO.setItemId(itemId);
sarFileSplitItemsValEO.setType(DocumentSplitCommon.INTERPRETATION);
sarFileSplitItemsValEO.setDisplaySeq(index);
sarFileSplitItemsValEO.setValidFlag(0);
sarFileSplitItemsValEO.setCreationTime(new Date());
sarFileSplitItemsValEO.setModifyTime(new Date());
sarFileSplitItemsValEO.setCreationUser(sysUser.getId());
sarFileSplitItemsValEO.setModifyUser(sysUser.getId());
}
}
return valContent.toString();
}
private String itemContentJoin(List<SarFileSplitItemsValEO> valList, String itemId) {
StringBuilder valContent = new StringBuilder();
if (!Objects.isNull(valList) && !valList.isEmpty()){
@@ -326,9 +364,9 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService {
// 查询旧数据
for (Map<String, Object> map : listMap) {
String id = (String) map.get(ID);
sarFileSplitItemsValEOSList.addAll(documentSplitMapper.queryItemsValByItemId(id));
sarFileSplitItemsValEOSList.addAll(documentSplitMapper.queryItemsValByItemId(id, ""));
}
List<SarFileSplitItemsValEO> sarFileSplitItemsValEOS = documentSplitMapper.queryItemsValByItemId((String) firstData.get(ID));
List<SarFileSplitItemsValEO> sarFileSplitItemsValEOS = documentSplitMapper.queryItemsValByItemId((String) firstData.get(ID), "");
// 第一条数据信息的最大的排序字段值
Optional<SarFileSplitItemsValEO> sarFileSplitItemsValEOOptional = sarFileSplitItemsValEOS.stream().sorted().findFirst();
sarFileSplitItemsValEOOptional.ifPresent(v ->{
@@ -402,7 +440,7 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService {
@Override
public List<SarFileSplitItemsValEO> queryItemsValList(String itemId) {
List<SarFileSplitItemsValEO> sarFileSplitItemsValEOS = documentSplitMapper.queryItemsValByItemId(itemId);
List<SarFileSplitItemsValEO> sarFileSplitItemsValEOS = documentSplitMapper.queryItemsValByItemId(itemId, "");
if (!Objects.isNull(sarFileSplitItemsValEOS) && !sarFileSplitItemsValEOS.isEmpty()){
for (SarFileSplitItemsValEO sarFileSplitItemsValEO : sarFileSplitItemsValEOS) {
String imgPath = sarFileSplitItemsValEO.getItemContent();
@@ -479,6 +517,11 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService {
}
}
@Override
public List<SarFileSplitItemsValEO> queryInterpretationArticlesList(String itemId) {
return documentSplitMapper.queryItemsValByItemId(itemId, INTERPRETATION_ARTICLES);
}
private void manageData(Map<String, Object> resultMap, StringBuilder fieldsBuilder, StringBuilder valuesBuilder) {
// 所有key(字段名)
resultMap.forEach((k, v) -> {
@@ -533,6 +576,7 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService {
selectColumn.append("s.id");
for (LawsTag lawsTag : fieldListSelect) {
selectColumn.append(",");
selectColumn.append(DocumentSplitCommon.IF_NULL_BEGIN);
// 日期字段需要格式化
if (LawsFieldTypeEnum.DATE_SINGLE.getValue().equals(lawsTag.getDbFieldName())){
selectColumn.append(DocumentSplitCommon.DATE_FORMAT_BEGIN)
@@ -542,6 +586,7 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService {
// 普通字段直接拼接
selectColumn.append(lawsTag.getDbFieldName());
}
selectColumn.append(DocumentSplitCommon.IF_NULL_END);
// 别名
selectColumn.append(" as ").append(lawsTag.getDbFieldName());
}