fix(文档拆分): 发布时间优化

This commit is contained in:
yjz
2024-08-08 11:56:06 +08:00
parent d5ab21e17a
commit 986b1496d2
3 changed files with 50 additions and 21 deletions
@@ -176,6 +176,13 @@ public interface DocumentSplitMapper extends BaseMapper<LawsDocumentSplit> {
*/
List<SarFileSplitItemsVal> querySarFileSplitItemsValByItemId(@Param("itemId") String itemId);
/**
* 条目信息根据itemIds查询
* @param itemIds
* @return
*/
List<SarFileSplitItemsVal> querySarFileSplitItemsValByItemIds(@Param("itemIds") String itemIds);
/**
* 条目信息批量新增
* @param sarFileSplitItemsVal
@@ -200,6 +200,20 @@
where valid_flag = 0 and item_id = #{itemId}
</select>
<select id="querySarFileSplitItemsValByItemIds"
resultType="com.jero.modules.laws.documenttool.entity.SarFileSplitItemsVal">
select id, sys_org_code, item_id, type, item_content, display_seq, valid_flag,
img_name, index_item, creation_time, modify_user, modify_time, creation_user
from sar_file_split_items_val
where valid_flag = 0
<if test="itemIds != null and itemIds != ''">
and item_id in
<foreach collection="itemIds.split(',')" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
</select>
<select id="queryLawsDocumentSplitInId" resultType="java.util.Map">
select *
from laws_document_split
@@ -186,6 +186,8 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService {
private static final String CREATE_TIME = "create_time";
private static final String SPLIT_STATUS = "split_status";
private static final int NUMBER = 500;
@Autowired
private PlatformTransactionManager dataSourceTransactionManager;
@@ -1046,6 +1048,7 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService {
}
private void publishs(Map<String, Object> parameter, boolean b) {
long l = System.currentTimeMillis();
String id = (String) parameter.get(ID);
if (b){
// 水平越权
@@ -1103,22 +1106,16 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService {
// 文档拆分详情(旧)
List<Map<String, Object>> oldLawsDocumentSplitList = documentSplitMapper.queryLawsDocumentSplitByInfoId(id);
/**
* List<String> oldLawsDocumentSplitIdList = new ArrayList<>();
* List<String> newLawsDocumentSplitIdList = new ArrayList<>();
*/
// 旧新id映射(k:旧id v:新id
HashMap<String, String> oldNewMap = new HashMap<>();
for (Map<String, Object> 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());
// 记录映射关系
oldNewMap.put(oldId, newId);
// 旧目录id替换
Optional<String> optionalS = oldMenuIdList.stream().filter(v -> v.equals(map.get(MENU_ID))).findFirst();
optionalS.ifPresent(v -> {
@@ -1135,17 +1132,28 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService {
}
String insertField = String.join(",", keyList);
documentSplitMapper.insertLawsDocumentSplit(insertField, valueList);
}
// 条目信息 批量新增
Set<String> oldIdList = oldNewMap.keySet();
List<SarFileSplitItemsVal> sarFileSplitItemsVal =
documentSplitMapper.querySarFileSplitItemsValByItemIds(String.join(",", oldIdList));
for (SarFileSplitItemsVal fileSplitItemsVal : sarFileSplitItemsVal) {
fileSplitItemsVal.setId(UUID.randomUUID().toString().replace("-", ""));
fileSplitItemsVal.setItemId(oldNewMap.get(fileSplitItemsVal.getItemId()));
}
batchSaveItemsVal(sarFileSplitItemsVal);
log.info("===================================耗时:"+(System.currentTimeMillis() - l));
}
// 条目信息(旧)
List<SarFileSplitItemsVal> sarFileSplitItemsVal = documentSplitMapper.querySarFileSplitItemsValByItemId(oldId);
for (SarFileSplitItemsVal fileSplitItemsVal : sarFileSplitItemsVal) {
fileSplitItemsVal.setId(UUID.randomUUID().toString().replace("-", ""));
fileSplitItemsVal.setItemId(newId);
}
// 新增数据
if (!sarFileSplitItemsVal.isEmpty()){
documentSplitMapper.insertSarFileSplitItemsVal(sarFileSplitItemsVal);
}
private void batchSaveItemsVal(List<SarFileSplitItemsVal> allvItemsValList) {
int size = allvItemsValList.size();
int count = (int)Math.ceil((double) size / NUMBER);
for (int i = 1; i <= count; i++) {
List<SarFileSplitItemsVal> list = allvItemsValList.stream()
.skip((long) (Math.max(i, 1) - 1) * NUMBER)
.limit(NUMBER)
.collect(Collectors.toList());
documentSplitMapper.insertSarFileSplitItemsVal(list);
}
}