|
|
|
|
@ -4,6 +4,8 @@ import cn.hutool.core.collection.CollectionUtil;
|
|
|
|
|
import cn.hutool.core.util.IdUtil; |
|
|
|
|
import cn.hutool.core.util.StrUtil; |
|
|
|
|
import com.alibaba.fastjson2.JSON; |
|
|
|
|
import com.alibaba.fastjson2.JSONArray; |
|
|
|
|
import com.alibaba.fastjson2.JSONObject; |
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|
|
|
|
import com.biutag.supervision.constants.enums.AccountabilityTargetEnum; |
|
|
|
|
import com.biutag.supervision.constants.enums.BusinessTypeEnum; |
|
|
|
|
@ -50,9 +52,11 @@ import java.time.format.DateTimeFormatter;
|
|
|
|
|
import java.util.ArrayList; |
|
|
|
|
import java.util.Collections; |
|
|
|
|
import java.util.HashMap; |
|
|
|
|
import java.util.HashSet; |
|
|
|
|
import java.util.List; |
|
|
|
|
import java.util.Map; |
|
|
|
|
import java.util.Objects; |
|
|
|
|
import java.util.Set; |
|
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
@ -110,6 +114,7 @@ public class MailBoxCaptureService {
|
|
|
|
|
log.info("【局长信箱抓取新信件】查询到投诉举报信件信件数量:{}", mailList.size()); |
|
|
|
|
|
|
|
|
|
Map<String, String> involveProblemMapping = loadMayorMailboxInvolveProblemMapping(); |
|
|
|
|
Set<String> mergedMailboxOriginIds = loadMergedMailboxOriginIds(); |
|
|
|
|
|
|
|
|
|
// 3. 遍历处理
|
|
|
|
|
int successCount = 0; |
|
|
|
|
@ -118,6 +123,11 @@ public class MailBoxCaptureService {
|
|
|
|
|
|
|
|
|
|
for (Mail mail : mailList) { |
|
|
|
|
try { |
|
|
|
|
if (mergedMailboxOriginIds.contains(mail.getId())) { |
|
|
|
|
skipCount++; |
|
|
|
|
log.info("【局长信箱抓取新信件】跳过已合并源件: mailId={}", mail.getId()); |
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
|
// 每条记录在独立事务中执行
|
|
|
|
|
boolean success = Boolean.TRUE.equals(transactionTemplate.execute(status -> { |
|
|
|
|
return doCaptureSingleMail(mail, involveProblemMapping); |
|
|
|
|
@ -262,6 +272,45 @@ public class MailBoxCaptureService {
|
|
|
|
|
return exists; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 从合并历史中提取已合并的局长信箱源件编号,供抓取任务排除。 |
|
|
|
|
*/ |
|
|
|
|
private Set<String> loadMergedMailboxOriginIds() { |
|
|
|
|
Set<String> originIds = new HashSet<>(); |
|
|
|
|
List<ComplaintCollection> mergedRecords = complaintCollectionMapper.selectList( |
|
|
|
|
new LambdaQueryWrapper<ComplaintCollection>() |
|
|
|
|
.select(ComplaintCollection::getMergeHistory) |
|
|
|
|
.isNotNull(ComplaintCollection::getMergeHistory) |
|
|
|
|
.ne(ComplaintCollection::getMergeHistory, "") |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
for (ComplaintCollection record : mergedRecords) { |
|
|
|
|
try { |
|
|
|
|
JSONObject history = JSON.parseObject(record.getMergeHistory()); |
|
|
|
|
JSONArray merges = history == null ? null : history.getJSONArray("merges"); |
|
|
|
|
if (CollectionUtil.isEmpty(merges)) { |
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
|
for (Object merge : merges) { |
|
|
|
|
JSONObject mergeRecord = JSON.parseObject(JSON.toJSONString(merge)); |
|
|
|
|
if (mergeRecord == null) { |
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
|
if (ComplaintCollectionSourceTableEnum.MAYOR_MAILBOX.getCode() |
|
|
|
|
.equals(mergeRecord.getString("sourceTable"))) { |
|
|
|
|
String originId = mergeRecord.getString("originId"); |
|
|
|
|
if (StrUtil.isNotBlank(originId)) { |
|
|
|
|
originIds.add(originId); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} catch (Exception e) { |
|
|
|
|
log.warn("【局长信箱抓取新信件】解析合并历史失败,已跳过该记录: {}", e.getMessage()); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return originIds; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// ==================== 单位查询 ====================
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|