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.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import javax.validation.constraints.NotBlank;
/** /**
* @Author: 31318 * @Author: 31318
* @Date: 2023/09/26/10:07 * @Date: 2023/09/26/10:07
@@ -38,14 +36,12 @@ public class Oauth {
* 必需参数。授权码 * 必需参数。授权码
*/ */
@ApiModelProperty(value = "必需参数。授权码") @ApiModelProperty(value = "必需参数。授权码")
@NotBlank(message = "授权码不能为空!")
private String code; private String code;
/** /**
* 重定向URI * 重定向URI
*/ */
@ApiModelProperty(value = "重定向URI") @ApiModelProperty(value = "重定向URI")
@NotBlank(message = "重定向URI不能为空!")
private String redirectUri; private String redirectUri;
/** /**
@@ -8,6 +8,14 @@ package com.jero.modules.laws.documenttool.common;
public class DocumentSplitCommon { public class DocumentSplitCommon {
private 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 = " <= "; public static final String LT = " <= ";
/** /**
* 条目类型 TEXT:文本, IMG:图片, TABLE:表格 * 条目类型 TEXT:文本, IMG:图片, TABLE:表格, INTERPRETATION:解读
*/ */
public static final String TEXT = "TEXT"; public static final String TEXT = "TEXT";
/** /**
* 条目类型 * 条目类型 TEXT:文本, IMG:图片, TABLE:表格, INTERPRETATION:解读
*/ */
public static final String IMG = "IMG"; public static final String IMG = "IMG";
/** /**
* 条目类型 * 条目类型 TEXT:文本, IMG:图片, TABLE:表格, INTERPRETATION:解读
*/ */
public static final String TABLE = "TABLE"; 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 = "删除成功!";
public static final String MEG_DEL_BATCH = "批量删除成功!"; public static final String MEG_DEL_BATCH = "批量删除成功!";
} }
@@ -148,6 +148,17 @@ public class DocumentSplitController {
return Result.OK(documentSplitService.queryItemsValList(id)); 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 * @param itemId
* @return * @return
*/ */
List<SarFileSplitItemsValEO> queryItemsValByItemId(@Param("itemId") String itemId); List<SarFileSplitItemsValEO> queryItemsValByItemId(@Param("itemId") String itemId, @Param("type") String type);
/** /**
* 条目删除根据itemId * 条目删除根据itemId
* @param itemId * @param itemId
* @return * @return
*/ */
int deleteItemsValByItemId(@Param("itemId") String itemId); int deleteItemsValByItemId(@Param("itemId") String itemId, @Param("type") String type);
/** /**
* 目录删除根据menuId集合 * 目录删除根据menuId集合
@@ -44,6 +44,17 @@
<delete id="deleteItemsValByItemId"> <delete id="deleteItemsValByItemId">
delete from sar_file_split_items_val delete from sar_file_split_items_val
where item_id = #{itemId} 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> </delete>
<select id="queryByPage" resultType="com.jero.modules.laws.documenttool.entity.DocumentSplitInfo"> <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 creation_time, modify_time, modify_user, display_seq,img_name,index_item
from SAR_FILE_SPLIT_ITEMS_VAL from SAR_FILE_SPLIT_ITEMS_VAL
where valid_flag = '0' and ITEM_ID = #{itemId} 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 order by display_seq
</select> </select>
@@ -114,4 +114,11 @@ public interface IDocumentSplitService {
* @param response * @param response
*/ */
void downloadImportTemplate(HttpServletRequest request, HttpServletResponse 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_NUM = "item_num";
private static final String ITEM_TITLE = "item_title"; private static final String ITEM_TITLE = "item_title";
private static final String ITEM_CONTENT = "item_content"; private static final String ITEM_CONTENT = "item_content";
private static final String INTERPRETATION_ARTICLES = "interpretationArticles";
private static final String MENU_ID = "menu_id"; private static final String MENU_ID = "menu_id";
public DocumentSplitServiceImpl(DocumentSplitMapper documentSplitMapper, public DocumentSplitServiceImpl(DocumentSplitMapper documentSplitMapper,
ISarFileSplitInfoService sarFileSplitInfoService, ISarFileSplitInfoService sarFileSplitInfoService,
@@ -174,14 +175,23 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService {
.equals(v.getIsShowFormCreate())).collect(Collectors.toList()); .equals(v.getIsShowFormCreate())).collect(Collectors.toList());
List<LawsTag> finalFieldList = fieldList; List<LawsTag> finalFieldList = fieldList;
StringBuilder updateSet = new StringBuilder(); StringBuilder updateSet = new StringBuilder();
// 条目信息
List<SarFileSplitItemsValEO> valList = JSON.parseArray(JSON.toJSONString(parameter.get("itemValEOList")), SarFileSplitItemsValEO.class); List<SarFileSplitItemsValEO> valList = JSON.parseArray(JSON.toJSONString(parameter.get("itemValEOList")), SarFileSplitItemsValEO.class);
parameter.remove("itemValEOList"); parameter.remove("itemValEOList");
// 条文解读
List<SarFileSplitItemsValEO> articlesList = JSON.parseArray(JSON.toJSONString(parameter.get("interpretationArticlesList")), SarFileSplitItemsValEO.class);
parameter.remove("interpretationArticlesList");
// 计数 // 计数
parameter.forEach((k, v) ->{ parameter.forEach((k, v) ->{
// 条文内容拼接 // 条文内容拼接
if (ITEM_CONTENT.equals(k)){ if (ITEM_CONTENT.equals(k)){
v = itemContentJoin(valList, (String) parameter.get(ID)); 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); String updateValue = getUpdateValue(finalFieldList, k, (String) v);
if (StringUtils.isNotBlank(updateValue)){ if (StringUtils.isNotBlank(updateValue)){
@@ -196,13 +206,41 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService {
String updateCondition = "id = '" + parameter.get(ID) + "'"; String updateCondition = "id = '" + parameter.get(ID) + "'";
documentSplitMapper.editDocumentSplitDetail(updateSet.toString(), updateCondition); 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); 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) { private String itemContentJoin(List<SarFileSplitItemsValEO> valList, String itemId) {
StringBuilder valContent = new StringBuilder(); StringBuilder valContent = new StringBuilder();
if (!Objects.isNull(valList) && !valList.isEmpty()){ if (!Objects.isNull(valList) && !valList.isEmpty()){
@@ -326,9 +364,9 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService {
// 查询旧数据 // 查询旧数据
for (Map<String, Object> map : listMap) { for (Map<String, Object> map : listMap) {
String id = (String) map.get(ID); 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(); Optional<SarFileSplitItemsValEO> sarFileSplitItemsValEOOptional = sarFileSplitItemsValEOS.stream().sorted().findFirst();
sarFileSplitItemsValEOOptional.ifPresent(v ->{ sarFileSplitItemsValEOOptional.ifPresent(v ->{
@@ -402,7 +440,7 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService {
@Override @Override
public List<SarFileSplitItemsValEO> queryItemsValList(String itemId) { public List<SarFileSplitItemsValEO> queryItemsValList(String itemId) {
List<SarFileSplitItemsValEO> sarFileSplitItemsValEOS = documentSplitMapper.queryItemsValByItemId(itemId); List<SarFileSplitItemsValEO> sarFileSplitItemsValEOS = documentSplitMapper.queryItemsValByItemId(itemId, "");
if (!Objects.isNull(sarFileSplitItemsValEOS) && !sarFileSplitItemsValEOS.isEmpty()){ if (!Objects.isNull(sarFileSplitItemsValEOS) && !sarFileSplitItemsValEOS.isEmpty()){
for (SarFileSplitItemsValEO sarFileSplitItemsValEO : sarFileSplitItemsValEOS) { for (SarFileSplitItemsValEO sarFileSplitItemsValEO : sarFileSplitItemsValEOS) {
String imgPath = sarFileSplitItemsValEO.getItemContent(); 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) { private void manageData(Map<String, Object> resultMap, StringBuilder fieldsBuilder, StringBuilder valuesBuilder) {
// 所有key(字段名) // 所有key(字段名)
resultMap.forEach((k, v) -> { resultMap.forEach((k, v) -> {
@@ -533,6 +576,7 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService {
selectColumn.append("s.id"); selectColumn.append("s.id");
for (LawsTag lawsTag : fieldListSelect) { for (LawsTag lawsTag : fieldListSelect) {
selectColumn.append(","); selectColumn.append(",");
selectColumn.append(DocumentSplitCommon.IF_NULL_BEGIN);
// 日期字段需要格式化 // 日期字段需要格式化
if (LawsFieldTypeEnum.DATE_SINGLE.getValue().equals(lawsTag.getDbFieldName())){ if (LawsFieldTypeEnum.DATE_SINGLE.getValue().equals(lawsTag.getDbFieldName())){
selectColumn.append(DocumentSplitCommon.DATE_FORMAT_BEGIN) selectColumn.append(DocumentSplitCommon.DATE_FORMAT_BEGIN)
@@ -542,6 +586,7 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService {
// 普通字段直接拼接 // 普通字段直接拼接
selectColumn.append(lawsTag.getDbFieldName()); selectColumn.append(lawsTag.getDbFieldName());
} }
selectColumn.append(DocumentSplitCommon.IF_NULL_END);
// 别名 // 别名
selectColumn.append(" as ").append(lawsTag.getDbFieldName()); selectColumn.append(" as ").append(lawsTag.getDbFieldName());
} }