|
|
|
|
@ -1,6 +1,7 @@
|
|
|
|
|
package com.biutag.supervision.service; |
|
|
|
|
|
|
|
|
|
import cn.hutool.core.util.StrUtil; |
|
|
|
|
import com.alibaba.fastjson.JSON; |
|
|
|
|
import com.alibaba.fastjson.JSONObject; |
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|
|
|
|
@ -17,6 +18,7 @@ import com.biutag.supervision.pojo.param.ModelClueQueryParam;
|
|
|
|
|
import com.biutag.supervision.pojo.vo.FileVo; |
|
|
|
|
import lombok.RequiredArgsConstructor; |
|
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
|
import org.springframework.data.redis.core.RedisTemplate; |
|
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
|
|
|
|
|
|
@ -59,6 +61,8 @@ public class ModelClueService extends ServiceImpl<ModelClueMapper, ModelClue> {
|
|
|
|
|
|
|
|
|
|
private final StatisticsDepartMapper statisticsDepartMapper; |
|
|
|
|
|
|
|
|
|
private final RedisTemplate<Object, Object> redisTemplate; |
|
|
|
|
|
|
|
|
|
public Page<ModelClueModel> page(ModelClueQueryParam param) { |
|
|
|
|
if (Objects.nonNull(param.getModelIds()) && param.getModelIds().isEmpty()) { |
|
|
|
|
return new Page<ModelClueModel>().setTotal(0).setRecords(new ArrayList<>()); |
|
|
|
|
@ -198,19 +202,7 @@ public class ModelClueService extends ServiceImpl<ModelClueMapper, ModelClue> {
|
|
|
|
|
|
|
|
|
|
public void generate(Integer modelId) { |
|
|
|
|
if (modelId == 1300) { |
|
|
|
|
List<ModelClue> modelClues = modelClueMapper.selectByModelId(103); |
|
|
|
|
if (modelClues != null && !modelClues.isEmpty()) { |
|
|
|
|
for (ModelClue modelClue : modelClues) { |
|
|
|
|
SupExternalDepart supExternalDepart = supExternalDepartMapper.selectOne(new LambdaQueryWrapper<SupExternalDepart>().eq(SupExternalDepart::getExternalId, modelClue.getInvolveDepartId()).last("LIMIT 1")); |
|
|
|
|
if (supExternalDepart != null) { |
|
|
|
|
if (supExternalDepart.getInternalId() != null) { |
|
|
|
|
modelClueMapper.updateInvolveDepartId(modelClue.getId(), supExternalDepart.getInternalId()); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
System.out.println("No records found for model_id 103."); |
|
|
|
|
} |
|
|
|
|
updateDepart(); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
Model model = modelMapper.selectById(modelId); |
|
|
|
|
@ -234,12 +226,32 @@ public class ModelClueService extends ServiceImpl<ModelClueMapper, ModelClue> {
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void updateDepart() { |
|
|
|
|
List<ModelClue> modelClues = modelClueMapper.selectByModelId(103); |
|
|
|
|
if (modelClues != null && !modelClues.isEmpty()) { |
|
|
|
|
for (ModelClue modelClue : modelClues) { |
|
|
|
|
SupExternalDepart supExternalDepart = supExternalDepartMapper.selectOne(new LambdaQueryWrapper<SupExternalDepart>().eq(SupExternalDepart::getExternalId, modelClue.getInvolveDepartId()).last("LIMIT 1")); |
|
|
|
|
if (supExternalDepart != null) { |
|
|
|
|
if (supExternalDepart.getInternalId() != null) { |
|
|
|
|
modelClueMapper.updateInvolveDepartId(modelClue.getId(), supExternalDepart.getInternalId()); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
System.out.println("No records found for model_id 103."); |
|
|
|
|
} |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public List<ModelClue> getModelClueBySql(String sql, Integer modelId) { |
|
|
|
|
List<ModelClue> modelClues = new ArrayList<>(); |
|
|
|
|
if (modelId == 2) { // 2号模型:行政、刑事案件受立案不及时问题监督模型
|
|
|
|
|
return getModelCluesForModel2(sql, modelClues); |
|
|
|
|
} else if (modelId == 4) { // 4号模型:疑似漏登执法办案场所问题监督模型
|
|
|
|
|
return getModelCluesForModel4(sql, modelClues); |
|
|
|
|
} else if (modelId == 5) { // 5号模型:重点人员重复报警监督模型
|
|
|
|
|
getModelCluesForModel5(sql, modelClues); |
|
|
|
|
return modelClues; |
|
|
|
|
} else if (modelId == 16) { // 16号模型:多次取保的异常数据
|
|
|
|
|
getModelCluesForModel16(sql, modelClues); |
|
|
|
|
return modelClues; |
|
|
|
|
@ -321,6 +333,69 @@ public class ModelClueService extends ServiceImpl<ModelClueMapper, ModelClue> {
|
|
|
|
|
return needsInsertModelClues; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void getModelCluesForModel5(String param, List<ModelClue> modelClues) { |
|
|
|
|
List<Object> jsonStrings = redisTemplate.boundListOps("call:point").range(0, -1); |
|
|
|
|
if (jsonStrings != null) { |
|
|
|
|
System.out.println("获取到的数据条数:" + jsonStrings.size()); |
|
|
|
|
try { |
|
|
|
|
for (Object jsonString : jsonStrings) { |
|
|
|
|
JSONObject jsonObject = JSON.parseObject((String) jsonString); |
|
|
|
|
String name = (String) jsonObject.get("name"); |
|
|
|
|
String mobiles = (String) jsonObject.get("mobiles"); |
|
|
|
|
String idCode = (String) jsonObject.get("idCode"); |
|
|
|
|
String labels = (String) jsonObject.get("labels"); |
|
|
|
|
Integer callCount = (Integer) jsonObject.get("callCount"); |
|
|
|
|
Integer noUsefulCallCount = (Integer) jsonObject.get("noUsefulCallCount"); |
|
|
|
|
String desc = (String) jsonObject.get("desc"); |
|
|
|
|
String controlId = (String) jsonObject.get("controlId"); |
|
|
|
|
String controlName = (String) jsonObject.get("controlName"); |
|
|
|
|
ModelClue newModelClue = new ModelClue(); |
|
|
|
|
LocalDate currentDate = LocalDate.now(); |
|
|
|
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd"); |
|
|
|
|
newModelClue.setUniqueKey(idCode + currentDate.format(formatter)); |
|
|
|
|
newModelClue.setNegativeIdEx(idCode + currentDate.format(formatter)); |
|
|
|
|
SupExternalDepart supExternalDepart = supExternalDepartMapper.selectOne(new LambdaQueryWrapper<SupExternalDepart>().eq(SupExternalDepart::getExternalId, controlId).last("LIMIT 1")); |
|
|
|
|
if (supExternalDepart != null) { |
|
|
|
|
if (supExternalDepart.getInternalId() != null) { |
|
|
|
|
newModelClue.setInvolveDepartId(supExternalDepart.getInternalId()); |
|
|
|
|
} |
|
|
|
|
if (supExternalDepart.getInternalShortName() != null) { |
|
|
|
|
newModelClue.setInvolveDepartName(supExternalDepart.getInternalShortName()); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
newModelClue.setData(JSONObject.toJSONString(jsonString)); |
|
|
|
|
newModelClue.setDistributionState("0"); |
|
|
|
|
String dateString = getDateString(currentDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); |
|
|
|
|
if (callCount >= 5 && noUsefulCallCount >= 100) { |
|
|
|
|
newModelClue.setThingDesc( |
|
|
|
|
"发现" + newModelClue.getInvolveDepartName() + "管理的重点人员" + name |
|
|
|
|
+ "(身份证号:" + idCode + ")于" + dateString + "产生了" + callCount |
|
|
|
|
+ "条有效报警," + noUsefulCallCount + "条无效报警,报警电话为“" |
|
|
|
|
+ mobiles + "”请予以重点关注。"); |
|
|
|
|
} else if (callCount >= 5) { |
|
|
|
|
newModelClue.setThingDesc( |
|
|
|
|
"发现" + newModelClue.getInvolveDepartName() + "管理的重点人员" + name |
|
|
|
|
+ "(身份证号:"+idCode+")于" + dateString + "产生了" + callCount |
|
|
|
|
+ "条有效报警,报警电话为“" + mobiles + "”请予以重点关注。"); |
|
|
|
|
} else if (noUsefulCallCount >= 100) { |
|
|
|
|
newModelClue.setThingDesc( |
|
|
|
|
"发现" + newModelClue.getInvolveDepartName() + "管理的重点人员" + name |
|
|
|
|
+ "(身份证号:"+idCode+")于" + dateString + "产生了" |
|
|
|
|
+ noUsefulCallCount + "条无效报警,报警电话为“" + mobiles + "”请予以重点关注。"); |
|
|
|
|
} else { |
|
|
|
|
System.out.println("数据有误,idCode:" + idCode + "callCount:" + callCount + "noUsefulCallCount:" + noUsefulCallCount); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
modelClues.add(newModelClue); |
|
|
|
|
} |
|
|
|
|
} catch (Exception e) { |
|
|
|
|
log.error("模型5执行失败", e); |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
System.out.println("Redis未找到key'call:point'"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private List<ModelClue> filterDataForModel26(List<Map<String, Object>> allData) { |
|
|
|
|
List<Map<String, Object>> filteredData = allData.stream().filter(map -> map.get("ajbh") != null && map.get("zjhm") != null).toList(); |
|
|
|
|
Map<String, Map<String, List<Map<String, Object>>>> groupedData = filteredData.stream() |
|
|
|
|
|