Browse Source

模型数据任务更新

master
kami 1 year ago
parent
commit
e9a3410e81
  1. 3
      src/main/java/com/biutag/supervisiondata/event/ApplicationEvent.java
  2. 7
      src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseZDRYMapper.java
  3. 3
      src/main/java/com/biutag/supervisiondata/pojo/ClueData.java
  4. 4
      src/main/java/com/biutag/supervisiondata/pojo/constants/Default.java
  5. 13
      src/main/java/com/biutag/supervisiondata/service/GBaseBAService.java
  6. 11
      src/main/java/com/biutag/supervisiondata/service/PointService.java
  7. 160
      src/main/java/com/biutag/supervisiondata/service/impl/GBaseBAServiceImpl.java
  8. 78
      src/main/java/com/biutag/supervisiondata/service/impl/GBaseJJDServiceImpl.java
  9. 142
      src/main/java/com/biutag/supervisiondata/service/impl/GBaseSHRWFRServiceImpl.java
  10. 1
      src/main/java/com/biutag/supervisiondata/service/impl/HabitServiceImpl.java
  11. 2
      src/main/java/com/biutag/supervisiondata/service/impl/MarriageServiceImpl.java
  12. 4
      src/main/java/com/biutag/supervisiondata/service/impl/NoControlServiceImpl.java
  13. 1
      src/main/java/com/biutag/supervisiondata/service/impl/PetitionServiceImpl.java
  14. 306
      src/main/java/com/biutag/supervisiondata/service/impl/PointServiceImpl.java
  15. 2
      src/main/java/com/biutag/supervisiondata/service/impl/RiskModelTaskClueServiceImpl.java
  16. 36
      src/main/java/com/biutag/supervisiondata/service/impl/WdpcGrjdJsbryServiceService.java
  17. 13
      src/main/java/com/biutag/supervisiondata/task/TaskService.java

3
src/main/java/com/biutag/supervisiondata/event/ApplicationEvent.java

@ -54,9 +54,6 @@ public class ApplicationEvent {
@Resource @Resource
private RiskPersonalService riskPersonalService; private RiskPersonalService riskPersonalService;
@Resource
private GBaseBAService gBaseBAService;
@Resource @Resource
private PoliceService policeService; private PoliceService policeService;

7
src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseZDRYMapper.java

@ -78,7 +78,10 @@ public interface GBaseZDRYMapper extends BaseMapper<GBaseZDRY> {
List<SecurityMan> syncSecurityMan2(); List<SecurityMan> syncSecurityMan2();
@Select("<script>" + @Select("<script>" +
" select distinct dwd_zjhm from dwd_wp_jtqbglpt_jdcjbxx where ztdm is not null and (ztdm != 'B' or ztdm != 'K' or ztdm != 'E' ) and dwd_zjhm in ( " + " select distinct a.dwd_zjhm from dwd_wp_jtqbglpt_jdcjbxx as a " +
" inner join csga_wdpcdb.wdpc_person as b on a.dwd_zjhm = b.id_code " +
" where a.dwd_zjlx = 'A' and a.ztdm is not null and a.ztdm not in ( 'B','K','E') "+
" and a.dwd_zjhm in ( " +
" <foreach collection='list' separator=',' item='item'> " + " <foreach collection='list' separator=',' item='item'> " +
" #{item}" + " #{item}" +
" </foreach>" + " </foreach>" +
@ -88,7 +91,7 @@ public interface GBaseZDRYMapper extends BaseMapper<GBaseZDRY> {
@Select(" select distinct a.dwd_zjhm from dwd_wp_jtqbglpt_jdcjbxx as a " + @Select(" select distinct a.dwd_zjhm from dwd_wp_jtqbglpt_jdcjbxx as a " +
" inner join csga_wdpcdb.wdpc_person as b on a.dwd_zjhm = b.id_code" + " inner join csga_wdpcdb.wdpc_person as b on a.dwd_zjhm = b.id_code" +
" where (length(a.dwd_zjhm) = 18 or length(a.dwd_zjhm) = 15) and a.dwd_zjlx = 'A' and a.ztdm is not null and a.ztdm not in ( 'B','K','E') ") " where a.dwd_zjlx = 'A' and a.ztdm is not null and a.ztdm not in ( 'B','K','E') ")
List<String> syncCarUser2(); List<String> syncCarUser2();
/** /**

3
src/main/java/com/biutag/supervisiondata/pojo/ClueData.java

@ -30,7 +30,8 @@ public class ClueData implements Serializable {
String idCode; String idCode;
String id; @Builder.Default
String id = "";
String name; String name;

4
src/main/java/com/biutag/supervisiondata/pojo/constants/Default.java

@ -82,7 +82,7 @@ public class Default {
public static final String VIOLENCE_IG ="暴力伤害行为因素"; public static final String VIOLENCE_IG ="暴力伤害行为因素";
public static final String CONTROLLER_IG ="重点对象日常管控不到位因素"; public static final String CONTROLLER_IG ="B94特定对象日常管控不到位";
public static final String CONTROLLER2_IG ="风险人员排查不到位因素"; public static final String CONTROLLER2_IG ="风险人员排查不到位因素";
@ -96,7 +96,7 @@ public class Default {
public static final String NO_LOVE_IG = "感情失意因素"; public static final String NO_LOVE_IG = "感情失意因素";
public static final String GOODS_IG ="购买危险物品行为因素"; public static final String GOODS_IG ="B86准备作案工具";
public static final String CAR_IG ="有车因素"; public static final String CAR_IG ="有车因素";

13
src/main/java/com/biutag/supervisiondata/service/GBaseBAService.java

@ -1,13 +0,0 @@
package com.biutag.supervisiondata.service;
import com.biutag.supervisiondata.pojo.domain.TaskParamDomain;
/**
* @author kami on 2024-11-12 18:12:20
* @version 0.0.1
* @since 1.8
*/
public interface GBaseBAService {
void baModelTask(TaskParamDomain domain);
}

11
src/main/java/com/biutag/supervisiondata/service/PointService.java

@ -13,13 +13,13 @@ public interface PointService {
/** /**
* 重点人员类型 * 重点人员类型
* @param domain * @param domain domain
*/ */
void syncScore(TaskParamDomain domain); void syncScore(TaskParamDomain domain);
/** /**
* 重点人员列管类型 * 重点人员列管类型
* @param domain * @param domain domain
*/ */
void syncPointType(TaskParamDomain domain); void syncPointType(TaskParamDomain domain);
@ -34,11 +34,6 @@ public interface PointService {
* @param domain domain * @param domain domain
*/ */
void syncKillSelf(TaskParamDomain domain); void syncKillSelf(TaskParamDomain domain);
/**
* 涉药
* @param domain domain
*/
void syncDrug(TaskParamDomain domain);
/** /**
* 管控不给力 * 管控不给力
* @param domain domain * @param domain domain
@ -68,8 +63,6 @@ public interface PointService {
// 户籍类型 // 户籍类型
void syncDomicileType(TaskParamDomain domain); void syncDomicileType(TaskParamDomain domain);
void syncSecurity(TaskParamDomain domain);
/** /**
* 同步车主系统 * 同步车主系统
* @param domain domain * @param domain domain

160
src/main/java/com/biutag/supervisiondata/service/impl/GBaseBAServiceImpl.java

@ -1,160 +0,0 @@
package com.biutag.supervisiondata.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.biutag.supervisiondata.pojo.constants.Default;
import com.biutag.supervisiondata.pojo.domain.TaskParamDomain;
import com.biutag.supervisiondata.pojo.entity.dwd.GBaseBAXX;
import com.biutag.supervisiondata.pojo.entity.mine.RiskModelTaskClue;
import com.biutag.supervisiondata.pojo.entity.mine.RiskPersonal;
import com.biutag.supervisiondata.pojo.entity.mine.RiskTask;
import com.biutag.supervisiondata.repository.GBaseBAXXRepository;
import com.biutag.supervisiondata.repository.GBaseBAYJRepository;
import com.biutag.supervisiondata.repository.RiskModelTaskClueRepository;
import com.biutag.supervisiondata.repository.RiskTaskRepository;
import com.biutag.supervisiondata.service.GBaseBAService;
import com.biutag.supervisiondata.service.RiskModelTaskClueService;
import jdk.jfr.Description;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* @author kami on 2024-11-12 18:12:30
* @version 0.0.1
* @since 1.8
*/
@Slf4j
@Service
@AllArgsConstructor
public class GBaseBAServiceImpl implements GBaseBAService {
private final GBaseBAXXRepository gBaseBAXXRepository;
private final GBaseBAYJRepository gBaseBAYJRepository;
private final RiskTaskRepository riskTaskRepository;
private final RiskModelTaskClueService riskModelTaskClueService;
private final RiskModelTaskClueRepository clueRepository;
@Description("暂时用pointService里面的保安,那边数据多,但是有情况不对")
@Override
public void baModelTask(TaskParamDomain domain) {
RiskTask task = riskTaskRepository.create(domain.getPersons().size(), 37);
List<GBaseBAXX> xxList = getXX(domain);
Map<String, RiskModelTaskClue> oldMap = domain.getOldMap(task.getModelId(), true);
List<RiskModelTaskClue> toUpdate = new ArrayList<>();
List<RiskModelTaskClue> toInsert = new ArrayList<>();
Map<String, List<GBaseBAXX>> map = xxList.stream().collect(Collectors.groupingBy(GBaseBAXX::getSfzhm));
Map<String, RiskPersonal> personMap = domain.getPersons().stream().collect(Collectors.toMap(RiskPersonal::getIdCode, Function.identity(), (oldValue, newValue) -> newValue));
for (Map.Entry<String, List<GBaseBAXX>> entry : map.entrySet()) {
GBaseBAXX tmp = entry.getValue().getFirst();
if (tmp.getRyztdm() == null) {
continue;
}
if(entry.getValue() ==null || entry.getValue().isEmpty()) {
continue;
}
LocalDate date;
try {
if (tmp.getRzsj().contains("-")) {
date = LocalDate.parse(tmp.getRzsj(), DateTimeFormatter.ofPattern("yyyy-MM-dd"));
} else if(tmp.getRzsj().contains(".")) {
date = LocalDate.parse(tmp.getRzsj(), DateTimeFormatter.ofPattern("yyyy.M.d"));
} else {
date = LocalDate.parse(tmp.getRzsj(), DateTimeFormatter.ofPattern("yyyy年MM月dd日"));
}
} catch (Exception e) {
date = LocalDate.of(1991, 1, 2);
}
for (GBaseBAXX gBaseBAXX : entry.getValue()) {
LocalDate t;
try {
if (gBaseBAXX.getRzsj().contains("-")) {
t = LocalDate.parse(gBaseBAXX.getRzsj(), DateTimeFormatter.ofPattern("yyyy-MM-dd"));
} else if(tmp.getRzsj().contains(".")) {
t = LocalDate.parse(tmp.getRzsj(), DateTimeFormatter.ofPattern("yyyy.M.d"));
} else {
t = LocalDate.parse(tmp.getRzsj(), DateTimeFormatter.ofPattern("yyyy年MM月dd日"));
}
} catch (Exception e) {
t = LocalDate.of(1991, 1, 1);
}
if (t.isAfter(date)) {
tmp = gBaseBAXX;
date = t;
}
}
RiskModelTaskClue old = oldMap.get(tmp.getSfzhm());
if (tmp.getRyztdm().equals("1")) {
// 离职
if (old != null) {
RiskModelTaskClue clue = new RiskModelTaskClue();
clue.setId(old.getId());
clue.setDel(1);
toUpdate.add(clue);
}
continue;
}
if (old == null) {
LocalDateTime eventTime = null;
if(date.isAfter(LocalDate.of(1991, 1, 5))) {
eventTime = LocalDateTime.of(date.getYear(), date.getMonth(),date.getDayOfMonth(),0 ,0,0);
}
RiskModelTaskClue clue = createClue(task.getModelId(), 2, personMap.get(tmp.getSfzhm()), task.getId(), Default.BA_TAG, "发现该人员正任职保安人员,属于特种职业",eventTime);
toInsert.add(clue);
}
}
log.info("数据库操作阶段");
// 新增
if (!toInsert.isEmpty()) {
riskModelTaskClueService.saveClues(toInsert, Default.IMPORT_IG);
}
// 修改
if (!toUpdate.isEmpty()) {
log.info("修改线索条数 | {}", toUpdate.size());
clueRepository.updateBatchById(toUpdate);
}
riskTaskRepository.updateTask(task.getId(), toInsert.size(), toUpdate.size());
}
RiskModelTaskClue createClue(Integer modelId, Integer score, RiskPersonal person, Integer taskId, String reason, String data, LocalDateTime eventTime) {
RiskModelTaskClue clue = new RiskModelTaskClue();
clue.setModelId(modelId);
clue.setScore(score);
clue.setName(person.getName());
clue.setIdCode(person.getIdCode());
clue.setTaskId(taskId);
clue.setRiskReason(reason);
clue.setData(data);
clue.setCreateTime(LocalDateTime.now());
clue.setUpdateTime(LocalDateTime.now());
clue.setEventTime(eventTime);
return clue;
}
List<GBaseBAXX> getXX(TaskParamDomain domain) {
List<GBaseBAXX> list = new ArrayList<>();
for (List<String> idCard : domain.getIdCards()) {
list.addAll(gBaseBAXXRepository.list(new LambdaQueryWrapper<GBaseBAXX>()
.select(GBaseBAXX::getXm, GBaseBAXX::getSfzhm, GBaseBAXX::getZw, GBaseBAXX::getRyztmc, GBaseBAXX::getRyztdm, GBaseBAXX::getRzsj)
.in(GBaseBAXX::getSfzhm, idCard)));
}
return list;
}
}

78
src/main/java/com/biutag/supervisiondata/service/impl/GBaseJJDServiceImpl.java

@ -199,7 +199,7 @@ public class GBaseJJDServiceImpl implements GBaseJJDService {
personal.setControlDepartName(null); personal.setControlDepartName(null);
continue; continue;
} }
SupExternalDepart depart = DepartUtil.findLevelThereOrg(tmp.getGxdwdm(), OrgType.INSTANCE); SupExternalDepart depart = Optional.ofNullable(hope.get(tmp.getGxdwdm())).orElse(DepartUtil.findLevelThereOrg(tmp.getGxdwdm(), OrgType.INSTANCE));
if (depart == null) { if (depart == null) {
personal.setControlDepartId(null); personal.setControlDepartId(null);
personal.setControlDepartName(null); personal.setControlDepartName(null);
@ -216,7 +216,6 @@ public class GBaseJJDServiceImpl implements GBaseJJDService {
personal.setControlTime(time); personal.setControlTime(time);
} catch (Exception e) { } catch (Exception e) {
personal.setCreateTime(LocalDateTime.now()); personal.setCreateTime(LocalDateTime.now());
log.info("报警时间处理异常");
} }
} }
log.info("开始写数据"); log.info("开始写数据");
@ -412,7 +411,7 @@ public class GBaseJJDServiceImpl implements GBaseJJDService {
@Override @Override
public void warningInstance(TaskParamDomain domain) { public void warningInstance(TaskParamDomain domain) {
String startTime = LocalDateTime.of(2023, 12, 6, 0, 0, 0).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); String startTime = LocalDateTime.now().minusYears(1).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
Map<String, RiskPersonal> idCodelMap = domain.getPersons().stream().collect(Collectors.toMap(RiskPersonal::getIdCode, Function.identity(), (val, old) -> val)); Map<String, RiskPersonal> idCodelMap = domain.getPersons().stream().collect(Collectors.toMap(RiskPersonal::getIdCode, Function.identity(), (val, old) -> val));
Map<String, RiskPersonal> mobileMap = domain.getPersons().stream().filter(item -> item.getMobileNumber() != null && !item.getMobileNumber().isEmpty()).collect(Collectors.toMap(RiskPersonal::getMobileNumber, Function.identity(), (val, old) -> val)); Map<String, RiskPersonal> mobileMap = domain.getPersons().stream().filter(item -> item.getMobileNumber() != null && !item.getMobileNumber().isEmpty()).collect(Collectors.toMap(RiskPersonal::getMobileNumber, Function.identity(), (val, old) -> val));
@ -475,17 +474,16 @@ public class GBaseJJDServiceImpl implements GBaseJJDService {
for (Map.Entry<String, List<String>> entry : personJqList.entrySet()) { for (Map.Entry<String, List<String>> entry : personJqList.entrySet()) {
list = entry.getValue().stream().distinct().toList(); list = entry.getValue().stream().distinct().toList();
RiskPersonal person = idCodelMap.get(entry.getKey()); RiskPersonal person = idCodelMap.get(entry.getKey());
StringBuilder sb = new StringBuilder("该人员近一年来有"+list.size()+"起平台涉警事件,接警单编号为:"); StringBuilder sb = new StringBuilder("该人员近一年来有" + list.size() + "起平台涉警事件,接警单编号为:");
for (int i = 0,length = Math.min(3, list.size()); i < length; i++) { for (int i = 0, length = Math.min(3, list.size()); i < length; i++) {
sb.append(list.get(i)).append(","); sb.append(list.get(i)).append(",");
} }
ClueData data = ClueData.builder() ClueData data = ClueData.builder()
.name(person.getName()) .name(person.getName())
.id("")
.idCode(person.getIdCode()) .idCode(person.getIdCode())
.tags(List.of(list.size()+"起平台涉警事件")) .tags(List.of(list.size() + "起平台涉警事件"))
.sourceData(sb.substring(0, sb.length()-1)) .sourceData(sb.substring(0, sb.length() - 1))
.eventTime(LocalDateTime.now()) .eventTime(LocalDateTime.now())
.personId(person.getId()) .personId(person.getId())
.score(Math.min(5, list.size())) .score(Math.min(5, list.size()))
@ -493,7 +491,7 @@ public class GBaseJJDServiceImpl implements GBaseJJDService {
toInsert.add(DataUtil.createClueData(task, data)); toInsert.add(DataUtil.createClueData(task, data));
} }
if(!toInsert.isEmpty()) { if (!toInsert.isEmpty()) {
log.info("保存平台涉警事件数据:{}", toInsert.size()); log.info("保存平台涉警事件数据:{}", toInsert.size());
clueService.saveClues(toInsert, "B28平台涉警事件"); clueService.saveClues(toInsert, "B28平台涉警事件");
} }
@ -1025,7 +1023,6 @@ public class GBaseJJDServiceImpl implements GBaseJJDService {
} }
ClueData data = ClueData.builder() ClueData data = ClueData.builder()
.name(person.getName()) .name(person.getName())
.id("")
.idCode(person.getIdCode()) .idCode(person.getIdCode())
.tags(List.of("被欺凌")) .tags(List.of("被欺凌"))
.score(Math.min(jjdList.size(), 5)) .score(Math.min(jjdList.size(), 5))
@ -1044,24 +1041,21 @@ public class GBaseJJDServiceImpl implements GBaseJJDService {
@Override @Override
public void syncOtherContradict(TaskParamDomain domain) { public void syncOtherContradict(TaskParamDomain domain) {
String startTime = LocalDateTime.of(2023, 12, 6, 0, 0, 0).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); String startTime = LocalDateTime.now().minusYears(1).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
List<Contradict> list = gBaseSYRKXXRepository.getBaseMapper().selectContradict(startTime); List<Contradict> list = gBaseSYRKXXRepository.getBaseMapper().selectContradict(startTime);
RiskTask task = taskRepository.create(list.size(), 75); RiskTask task = taskRepository.create(list.size(), 75);
Map<String, List<Contradict>> map = list.stream().collect(Collectors.groupingBy(Contradict::getGmsfhm)); Map<String, List<Contradict>> map = list.stream().collect(Collectors.groupingBy(Contradict::getGmsfhm));
Map<String, RiskModelTaskClue> oldMap = domain.getOldMap(task.getModelId(), true); Map<String, RiskModelTaskClue> oldMap = domain.getOldMap(task.getModelId(), true);
List<RiskModelTaskClue> toInsert = new ArrayList<>(); List<RiskModelTaskClue> toInsert = new ArrayList<>();
List<RiskModelTaskClue> toUpdate = new ArrayList<>();
for (RiskPersonal person : domain.getPersons()) { for (RiskPersonal person : domain.getPersons()) {
List<Contradict> contradicts = map.get(person.getIdCode()); List<Contradict> contradicts = Optional.ofNullable(map.get(person.getIdCode())).orElse(new ArrayList<>()).stream().sorted(Comparator.comparing(Contradict::getType)).toList();
if (contradicts == null) { if (contradicts.isEmpty()) continue;
continue;
}
if (oldMap.get(person.getIdCode()) != null) {
continue;
}
StringBuilder sb = new StringBuilder("该人员涉及"); StringBuilder sb = new StringBuilder("该人员涉及");
for (Contradict contradict : contradicts) { for (Contradict contradict : contradicts) {
switch (contradict.getType()) { switch (contradict.getType()) {
@ -1075,9 +1069,22 @@ public class GBaseJJDServiceImpl implements GBaseJJDService {
sb.append("重大矛盾纠纷").append(contradict.getNumber().toString()).append("起").append(","); sb.append("重大矛盾纠纷").append(contradict.getNumber().toString()).append("起").append(",");
} }
} }
String desc = sb.substring(0, sb.length() - 1);
RiskModelTaskClue old = oldMap.get(person.getIdCode());
if (old != null && old.getData().equals(desc)) {
oldMap.remove(person.getIdCode());
continue;
}
if (old != null) {
oldMap.remove(person.getIdCode());
RiskModelTaskClue update = new RiskModelTaskClue();
update.setId(old.getId());
update.setData(desc);
toUpdate.add(update);
continue;
}
toInsert.add(DataUtil.createClueData(task, ClueData.builder() toInsert.add(DataUtil.createClueData(task, ClueData.builder()
.name(person.getName()) .name(person.getName())
.id("")
.idCode(person.getIdCode()) .idCode(person.getIdCode())
.tags(List.of("其他矛盾纠纷")) .tags(List.of("其他矛盾纠纷"))
.personId(person.getId()) .personId(person.getId())
@ -1088,10 +1095,30 @@ public class GBaseJJDServiceImpl implements GBaseJJDService {
} }
if (!toInsert.isEmpty()) { if (!toInsert.isEmpty()) {
log.info("其他纠纷:{} ", toInsert.size()); log.info("新增其他纠纷:{} ", toInsert.size());
clueService.saveClues(toInsert, "B57其他矛盾纠纷"); clueService.saveClues(toInsert, "B57其他矛盾纠纷");
} }
taskRepository.updateTask(task.getId(), toInsert.size(), 0); if (!toUpdate.isEmpty()) {
log.info("修改其他纠纷:{} ", toUpdate.size());
clueService.updateClues(toUpdate, task.getModelId());
}
List<RiskModelTaskClue> toDelete = new ArrayList<>();
List<String> deleteIdCodes = new ArrayList<>();
for (Map.Entry<String, RiskModelTaskClue> entry : oldMap.entrySet()) {
RiskModelTaskClue delete = new RiskModelTaskClue();
delete.setId(entry.getValue().getId());
delete.setDel(1);
toDelete.add(delete);
deleteIdCodes.add(entry.getValue().getIdCode());
}
if (!toDelete.isEmpty()) {
log.info("删除其他纠纷:{} ", toDelete.size());
clueService.deleteCluesAndDeleteTag(toDelete, deleteIdCodes, task.getModelId());
}
taskRepository.updateTask(task.getId(), toInsert.size(), toUpdate.size()+toDelete.size());
} }
/** /**
@ -1254,7 +1281,6 @@ public class GBaseJJDServiceImpl implements GBaseJJDService {
} }
toInsert.add(DataUtil.createClueData(task, ClueData.builder() toInsert.add(DataUtil.createClueData(task, ClueData.builder()
.name(person.getName()) .name(person.getName())
.id("")
.idCode(person.getIdCode()) .idCode(person.getIdCode())
.tags(List.of("与" + tag + "存在矛盾")) .tags(List.of("与" + tag + "存在矛盾"))
.eventTime(time) .eventTime(time)
@ -1327,7 +1353,6 @@ public class GBaseJJDServiceImpl implements GBaseJJDService {
} }
toInsert.add(DataUtil.createClueData(task, ClueData.builder() toInsert.add(DataUtil.createClueData(task, ClueData.builder()
.name(personal.getName()) .name(personal.getName())
.id("")
.idCode(personal.getIdCode()) .idCode(personal.getIdCode())
.tags(List.of(tag)) .tags(List.of(tag))
.personId(personal.getId()) .personId(personal.getId())
@ -1338,11 +1363,6 @@ public class GBaseJJDServiceImpl implements GBaseJJDService {
return toInsert; return toInsert;
} }
void toRedisCache(List<GBaseJJD> jjdList, String keyName) {
RedisDao.getInstance().removeListAll(keyName);
RedisDao.getInstance().pipeLineExec((connection, key, value) -> jjdList.forEach(item -> connection.rPush(key.serialize(keyName), value.serialize(JSON.toJSONString(item)))));
}
/** /**
* 多身份证对比名称 * 多身份证对比名称
* *

142
src/main/java/com/biutag/supervisiondata/service/impl/GBaseSHRWFRServiceImpl.java

@ -120,30 +120,26 @@ public class GBaseSHRWFRServiceImpl implements GBaseSHRWFRService {
@Override @Override
public void combatCrime(TaskParamDomain domain) { public void combatCrime(TaskParamDomain domain) {
LocalDateTime start = LocalDateTime.of(2019, 12, 6, 0, 0, 0); LocalDateTime start = LocalDateTime.now().minusYears(5);
LocalDateTime end = LocalDate.now().atTime(0, 0, 0); LocalDateTime end = LocalDateTime.now();
List<GBaseWFRXX> xxList = wfrxxRepository.getBaseMapper().selectFiveYearsCombatCrime(start.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")), end.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); List<GBaseWFRXX> xxList = wfrxxRepository.getBaseMapper().selectFiveYearsCombatCrime(start.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")), end.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
RiskTask task = taskRepository.create(xxList.size(), 63); RiskTask task = taskRepository.create(xxList.size(), 63);
List<RiskModelTaskClue> oldList = Optional.ofNullable(domain.getMap().get(task.getModelId())).orElse(new ArrayList<>()); Map<String, RiskModelTaskClue> oldMap = domain.getOldMap(task.getModelId(), true);
// 按人分
Map<String, List<RiskModelTaskClue>> personOldMap = oldList.stream().collect(Collectors.groupingBy(RiskModelTaskClue::getIdCode));
Map<String, List<GBaseWFRXX>> wfrMap = xxList.stream().collect(Collectors.groupingBy(GBaseWFRXX::getZjhm)); Map<String, List<GBaseWFRXX>> wfrMap = xxList.stream().collect(Collectors.groupingBy(GBaseWFRXX::getZjhm));
List<RiskModelTaskClue> toInsert = new ArrayList<>(); List<RiskModelTaskClue> toInsert = new ArrayList<>();
List<RiskModelTaskClue> toUpdate = new ArrayList<>();
List<RiskModelTaskClue> toDelete = new ArrayList<>();
List<String> deleteIdCodes = new ArrayList<>();
for (RiskPersonal person : domain.getPersons()) { for (RiskPersonal person : domain.getPersons()) {
List<GBaseWFRXX> wfxxList = wfrMap.get(person.getIdCode()); List<GBaseWFRXX> wfxxList = wfrMap.get(person.getIdCode());
if (wfxxList == null) { if (wfxxList == null) continue;
continue;
} wfxxList = wfxxList.stream().sorted().toList();
List<RiskModelTaskClue> olds = personOldMap.get(person.getIdCode());
// 是否只有一个
if (olds != null) {
continue;
}
StringBuilder zm = new StringBuilder(); StringBuilder zm = new StringBuilder();
StringBuilder aj = new StringBuilder(); StringBuilder aj = new StringBuilder();
LocalDateTime eventTime = null; LocalDateTime eventTime = null;
@ -154,16 +150,13 @@ public class GBaseSHRWFRServiceImpl implements GBaseSHRWFRService {
if (aj.indexOf(xx.getAjbh() + ",") == -1) { if (aj.indexOf(xx.getAjbh() + ",") == -1) {
aj.append(xx.getAjbh()).append(","); aj.append(xx.getAjbh()).append(",");
} }
try { LocalDateTime tmp = DateTimeUtil.date2LocalDateTime(xx.getLrsj());
LocalDateTime tmp = xx.getLrsj().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime(); if (eventTime == null) {
if (eventTime == null) { eventTime = tmp;
eventTime = tmp; continue;
continue; }
} if (eventTime.isBefore(tmp)) {
if (eventTime.isBefore(tmp)) { eventTime = tmp;
eventTime = tmp;
}
} catch (Exception ignored) {
} }
} }
StringBuilder tmp = new StringBuilder("该人员"); StringBuilder tmp = new StringBuilder("该人员");
@ -174,9 +167,21 @@ public class GBaseSHRWFRServiceImpl implements GBaseSHRWFRService {
if (!aj.isEmpty()) { if (!aj.isEmpty()) {
tmp.append("具体案件编号:").append(aj, 0, aj.length() - 1); tmp.append("具体案件编号:").append(aj, 0, aj.length() - 1);
} }
RiskModelTaskClue old = oldMap.get(person.getIdCode());
if (old != null && old.getData().contentEquals(tmp)) {
oldMap.remove(person.getIdCode());
continue;
}
if(old != null) {
oldMap.remove(person.getIdCode());
RiskModelTaskClue update = new RiskModelTaskClue();
update.setId(old.getId());
update.setData(tmp.toString());
toUpdate.add(update);
continue;
}
toInsert.add(DataUtil.createClueData(task, ClueData.builder() toInsert.add(DataUtil.createClueData(task, ClueData.builder()
// 案件编号、接警单编号之类
.id("")
.score(5) .score(5)
.personId(person.getId()) .personId(person.getId())
.tags(List.of("已被打击处理")) .tags(List.of("已被打击处理"))
@ -186,10 +191,28 @@ public class GBaseSHRWFRServiceImpl implements GBaseSHRWFRService {
.eventTime(eventTime) .eventTime(eventTime)
.build())); .build()));
} }
for (Map.Entry<String, RiskModelTaskClue> entry : oldMap.entrySet()) {
RiskModelTaskClue delete = new RiskModelTaskClue();
delete.setId(entry.getValue().getId());
delete.setDel(1);
deleteIdCodes.add(entry.getValue().getIdCode());
toDelete.add(delete);
}
if (!toInsert.isEmpty()) { if (!toInsert.isEmpty()) {
log.info("新增被打击处理{}条", toInsert.size());
clueService.saveClues(toInsert, "B24被打击处理"); clueService.saveClues(toInsert, "B24被打击处理");
} }
taskRepository.updateTask(task.getId(), toInsert.size(), 0); if (!toUpdate.isEmpty()) {
log.info("修改被打击处理{}条", toUpdate.size());
clueService.updateClues(toUpdate, task.getModelId());
}
if (!toDelete.isEmpty()) {
log.info("删除被打击处理{}条", toDelete.size());
clueService.deleteCluesAndDeleteTag(toDelete, deleteIdCodes, task.getModelId());
}
taskRepository.updateTask(task.getId(), toInsert.size(), toUpdate.size()+toDelete.size());
} }
@Override @Override
@ -197,30 +220,24 @@ public class GBaseSHRWFRServiceImpl implements GBaseSHRWFRService {
List<WdpcGrjdZblx> lxList = zblxRepository.list(new LambdaQueryWrapper<WdpcGrjdZblx>() List<WdpcGrjdZblx> lxList = zblxRepository.list(new LambdaQueryWrapper<WdpcGrjdZblx>()
.eq(WdpcGrjdZblx::getLxdm, "15")); .eq(WdpcGrjdZblx::getLxdm, "15"));
Map<String, WdpcGrjdZblx> map = lxList.stream().collect(Collectors.toMap(WdpcGrjdZblx::getDmbh, Function.identity(), (val, old) -> val)); Map<String, WdpcGrjdZblx> map = lxList.stream().collect(Collectors.toMap(WdpcGrjdZblx::getDmbh, Function.identity(), (val, old) -> val));
LocalDateTime start = LocalDateTime.of(2019, 12, 6, 0, 0, 0); LocalDateTime start = LocalDateTime.now().minusYears(5);
LocalDateTime end = LocalDate.now().atTime(0, 0, 0); LocalDateTime end = LocalDateTime.now();
List<GBaseWFRXX> xxList = wfrxxRepository.getBaseMapper().selectFiveYearsCombatCrime(start.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")), end.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); List<GBaseWFRXX> xxList = wfrxxRepository.getBaseMapper().selectFiveYearsCombatCrime(start.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")), end.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
RiskTask task = taskRepository.create(xxList.size(), 76); RiskTask task = taskRepository.create(xxList.size(), 76);
List<RiskModelTaskClue> oldList = Optional.ofNullable(domain.getMap().get(task.getModelId())).orElse(new ArrayList<>());
// 按人分 // 按人分
Map<String, List<RiskModelTaskClue>> personOldMap = oldList.stream().collect(Collectors.groupingBy(RiskModelTaskClue::getIdCode)); Map<String, RiskModelTaskClue> oldMap = domain.getOldMap(task.getModelId(), true);
Map<String, List<GBaseWFRXX>> wfrMap = xxList.stream().collect(Collectors.groupingBy(GBaseWFRXX::getZjhm)); Map<String, List<GBaseWFRXX>> wfrMap = xxList.stream().collect(Collectors.groupingBy(GBaseWFRXX::getZjhm));
List<RiskModelTaskClue> toInsert = new ArrayList<>(); List<RiskModelTaskClue> toInsert = new ArrayList<>();
List<RiskModelTaskClue> toUpdate = new ArrayList<>();
for (RiskPersonal person : domain.getPersons()) { for (RiskPersonal person : domain.getPersons()) {
List<GBaseWFRXX> wfxxList = wfrMap.get(person.getIdCode()); List<GBaseWFRXX> wfxxList = wfrMap.get(person.getIdCode());
if (wfxxList == null) { if (wfxxList == null) continue;
continue;
}
List<RiskModelTaskClue> olds = personOldMap.get(person.getIdCode());
if (olds != null) continue;
List<WdpcGrjdZblx> zblxList = new ArrayList<>(); List<WdpcGrjdZblx> zblxList = new ArrayList<>();
LocalDateTime time = null;
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
int size = 0; int size = 0;
for (GBaseWFRXX xx : wfxxList) { for (GBaseWFRXX xx : wfxxList) {
@ -237,21 +254,13 @@ public class GBaseSHRWFRServiceImpl implements GBaseSHRWFRService {
} }
sb.append(xx.getAjbh()).append(","); sb.append(xx.getAjbh()).append(",");
size++; size++;
try {
LocalDateTime tmp = DateTimeUtil.date2LocalDateTime(xx.getLrsj());
if(time == null) {
time = tmp;
continue;
}
if(time.isBefore(tmp)) {
time = tmp;
}
} catch (Exception ignored) {}
} }
RiskModelTaskClue old = oldMap.get(person.getIdCode());
if(zblxList.isEmpty()) { if(zblxList.isEmpty()) {
continue; continue;
} }
zblxList = zblxList.stream().filter(StreamUtil.distinctByKey(WdpcGrjdZblx::getDmmc)).toList(); zblxList = zblxList.stream().filter(StreamUtil.distinctByKey(WdpcGrjdZblx::getDmmc)).sorted().toList();
List<String> tags = new ArrayList<>(); List<String> tags = new ArrayList<>();
int score = 0; int score = 0;
StringBuilder zm = new StringBuilder(); StringBuilder zm = new StringBuilder();
@ -260,22 +269,53 @@ public class GBaseSHRWFRServiceImpl implements GBaseSHRWFRService {
score += wdpcGrjdZblx.getScore().intValue(); score += wdpcGrjdZblx.getScore().intValue();
zm.append(wdpcGrjdZblx.getDmmc()).append(","); zm.append(wdpcGrjdZblx.getDmmc()).append(",");
} }
if(old != null && old.getData().contentEquals(sb)) {
oldMap.remove(person.getIdCode());
continue;
}
if(old != null) {
oldMap.remove(person.getIdCode());
RiskModelTaskClue update = new RiskModelTaskClue();
update.setId(old.getId());
update.setData("发现该人员存在" + size + "起刑事处罚,关键罪名有:" + zm.substring(0, zm.length() - 1) + ",案件编号分别为:" + sb.substring(0, sb.length() - 1));
update.setScore(Math.min(5, score));
toUpdate.add(update);
continue;
}
ClueData data = ClueData.builder() ClueData data = ClueData.builder()
.name(person.getName()) .name(person.getName())
.id("")
.idCode(person.getIdCode()) .idCode(person.getIdCode())
.tags(tags) .tags(tags)
.score(Math.min(5, score)) .score(Math.min(5, score))
.personId(person.getId()) .personId(person.getId())
.sourceData("发现该人员存在" + size + "起刑事处罚,关键罪名有:" + zm.substring(0, zm.length() - 1) + ",案件编号分别为:" + sb.substring(0, sb.length() - 1)) .sourceData("发现该人员存在" + size + "起刑事处罚,关键罪名有:" + zm.substring(0, zm.length() - 1) + ",案件编号分别为:" + sb.substring(0, sb.length() - 1))
.eventTime(time)
.build(); .build();
toInsert.add(DataUtil.createClueData(task, data)); toInsert.add(DataUtil.createClueData(task, data));
} }
if (!toInsert.isEmpty()) { if (!toInsert.isEmpty()) {
log.info("新增刑事处罚罪名{}条", toInsert.size());
clueService.saveClues(toInsert, "B27刑事处罚罪名"); clueService.saveClues(toInsert, "B27刑事处罚罪名");
} }
taskRepository.updateTask(task.getId(), toInsert.size(), 0); if (!toUpdate.isEmpty()) {
log.info("修改刑事处罚罪名{}条", toUpdate.size());
clueService.updateClues(toUpdate, task.getModelId());
}
List<RiskModelTaskClue> toDelete = new ArrayList<>();
List<String> deleteIdCodes = new ArrayList<>();
for (Map.Entry<String, RiskModelTaskClue> entry : oldMap.entrySet()) {
RiskModelTaskClue delete = new RiskModelTaskClue();
delete.setId(entry.getValue().getId());
delete.setDel(1);
toDelete.add(delete);
deleteIdCodes.add(entry.getValue().getIdCode());
}
if (!toDelete.isEmpty()) {
log.info("删除刑事处罚罪名{}条", toDelete.size());
clueService.deleteCluesAndDeleteTag(toDelete, deleteIdCodes, task.getModelId());
}
taskRepository.updateTask(task.getId(), toInsert.size(), toUpdate.size()+toDelete.size());
} }
private final WdpcGrjdZblxRepository zblxRepository; private final WdpcGrjdZblxRepository zblxRepository;

1
src/main/java/com/biutag/supervisiondata/service/impl/HabitServiceImpl.java

@ -103,7 +103,6 @@ public class HabitServiceImpl implements HabitService {
continue; continue;
} }
toInsert.add(DataUtil.createClueData(task, ClueData.builder() toInsert.add(DataUtil.createClueData(task, ClueData.builder()
.id("habit")
.name(person.getName()) .name(person.getName())
.idCode(person.getIdCode()) .idCode(person.getIdCode())
.tags(List.of(tag)) .tags(List.of(tag))

2
src/main/java/com/biutag/supervisiondata/service/impl/MarriageServiceImpl.java

@ -64,7 +64,6 @@ public class MarriageServiceImpl implements MarriageService {
continue; continue;
} }
ClueData clueData = ClueData.builder() ClueData clueData = ClueData.builder()
.id("")
.score(5) .score(5)
.personId(person.getId()) .personId(person.getId())
.tags(List.of("离婚")) .tags(List.of("离婚"))
@ -83,7 +82,6 @@ public class MarriageServiceImpl implements MarriageService {
// 如果老数据存在且在新数据之前 // 如果老数据存在且在新数据之前
if(oldClue != null && !clueData.getEventTime().isAfter(oldClue.getEventTime())) continue; if(oldClue != null && !clueData.getEventTime().isAfter(oldClue.getEventTime())) continue;
ClueData clueData2 = ClueData.builder() ClueData clueData2 = ClueData.builder()
.id("")
.score(5) .score(5)
.personId(person.getId()) .personId(person.getId())
.tags(List.of("个人婚姻创伤")) .tags(List.of("个人婚姻创伤"))

4
src/main/java/com/biutag/supervisiondata/service/impl/NoControlServiceImpl.java

@ -86,7 +86,6 @@ public class NoControlServiceImpl implements NoControlService {
continue; continue;
} }
toInsert.add(DataUtil.createClueData(task, ClueData.builder() toInsert.add(DataUtil.createClueData(task, ClueData.builder()
.id("")
.idCode(personal.getIdCode()) .idCode(personal.getIdCode())
.name(personal.getName()) .name(personal.getName())
.personId(personal.getId()) .personId(personal.getId())
@ -134,7 +133,6 @@ public class NoControlServiceImpl implements NoControlService {
continue; continue;
} }
ClueData data = ClueData.builder() ClueData data = ClueData.builder()
.id(BhUtil.jjdBh(extreme.getJjdbh()))
.idCode(person.getIdCode()) .idCode(person.getIdCode())
.name(person.getName()) .name(person.getName())
.personId(person.getId()) .personId(person.getId())
@ -184,7 +182,6 @@ public class NoControlServiceImpl implements NoControlService {
continue; continue;
} }
ClueData data = ClueData.builder() ClueData data = ClueData.builder()
.id(BhUtil.zyBh(noControl.getDetNo()))
.idCode(person.getIdCode()) .idCode(person.getIdCode())
.name(person.getName()) .name(person.getName())
.personId(person.getId()) .personId(person.getId())
@ -212,7 +209,6 @@ public class NoControlServiceImpl implements NoControlService {
continue; continue;
} }
clueData.add(ClueData.builder() clueData.add(ClueData.builder()
.id("")
.idCode(person.getIdCode()) .idCode(person.getIdCode())
.name(person.getName()) .name(person.getName())
.personId(person.getId()) .personId(person.getId())

1
src/main/java/com/biutag/supervisiondata/service/impl/PetitionServiceImpl.java

@ -316,7 +316,6 @@ public class PetitionServiceImpl implements PetitionService {
continue; continue;
} }
toInsert.add(DataUtil.createClueData(task, ClueData.builder() toInsert.add(DataUtil.createClueData(task, ClueData.builder()
.id("")
.score(5) .score(5)
.personId(person.getId()) .personId(person.getId())
.tags(List.of(tag)) .tags(List.of(tag))

306
src/main/java/com/biutag/supervisiondata/service/impl/PointServiceImpl.java

@ -2,14 +2,12 @@ package com.biutag.supervisiondata.service.impl;
import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.biutag.supervisiondata.common.interfaces.CompletableFutureUtil;
import com.biutag.supervisiondata.common.utils.StreamUtil; import com.biutag.supervisiondata.common.utils.StreamUtil;
import com.biutag.supervisiondata.config.cache.RedisDao; import com.biutag.supervisiondata.config.cache.RedisDao;
import com.biutag.supervisiondata.mapper.dwd.ModelClueDataMapper; import com.biutag.supervisiondata.mapper.dwd.ModelClueDataMapper;
import com.biutag.supervisiondata.pojo.ClueData; import com.biutag.supervisiondata.pojo.ClueData;
import com.biutag.supervisiondata.pojo.constants.Default; import com.biutag.supervisiondata.pojo.constants.Default;
import com.biutag.supervisiondata.pojo.database.MuchCall; import com.biutag.supervisiondata.pojo.database.MuchCall;
import com.biutag.supervisiondata.pojo.database.SecurityMan;
import com.biutag.supervisiondata.pojo.domain.*; import com.biutag.supervisiondata.pojo.domain.*;
import com.biutag.supervisiondata.pojo.entity.dwd.*; import com.biutag.supervisiondata.pojo.entity.dwd.*;
import com.biutag.supervisiondata.pojo.entity.mine.*; import com.biutag.supervisiondata.pojo.entity.mine.*;
@ -33,7 +31,6 @@ import java.time.LocalDateTime;
import java.time.ZoneId; import java.time.ZoneId;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.IntStream; import java.util.stream.IntStream;
@ -121,12 +118,10 @@ public class PointServiceImpl implements PointService {
RiskModelTaskClue update = new RiskModelTaskClue(); RiskModelTaskClue update = new RiskModelTaskClue();
update.setId(old.getId()); update.setId(old.getId());
update.setData(desc); update.setData(desc);
update.setEventTime(LocalDateTime.now());
toUpdate.add(update); toUpdate.add(update);
continue; continue;
} }
toInsert.add(DataUtil.createClueData(task, ClueData.builder() toInsert.add(DataUtil.createClueData(task, ClueData.builder()
.id("")
.score(5) .score(5)
.personId(personals.getFirst().getId()) .personId(personals.getFirst().getId())
.tags(List.of("重点人员")) .tags(List.of("重点人员"))
@ -167,35 +162,20 @@ public class PointServiceImpl implements PointService {
Map<String, WdpcGrjdZblx> map = lxList.stream().collect(Collectors.toMap(WdpcGrjdZblx::getDmbh, Function.identity(), (val, old) -> val)); Map<String, WdpcGrjdZblx> map = lxList.stream().collect(Collectors.toMap(WdpcGrjdZblx::getDmbh, Function.identity(), (val, old) -> val));
List<GBaseZDRY> list = zdryRepository.getBaseMapper().syncPointPeople(); List<GBaseZDRY> list = zdryRepository.getBaseMapper().syncPointPeople();
log.info("重点人员查询人数: {}", list.size());
RiskTask task = taskRepository.create(list.size(), 67); RiskTask task = taskRepository.create(list.size(), 67);
Map<String, RiskPersonal> personalMap = domain.getPersons().stream().collect(Collectors.toMap(RiskPersonal::getIdCode, Function.identity(), (val, old) -> val)); Map<String, RiskPersonal> personalMap = domain.getPersons().stream().collect(Collectors.toMap(RiskPersonal::getIdCode, Function.identity(), (val, old) -> val));
Map<String, RiskModelTaskClue> oldMap = domain.getOldMap(task.getModelId(), true);
List<RiskModelTaskClue> olds = Optional.ofNullable(domain.getMap().get(task.getModelId())).orElse(new ArrayList<>());
Map<String, List<RiskModelTaskClue>> personMap = olds.stream().collect(Collectors.groupingBy(RiskModelTaskClue::getIdCode));
List<RiskModelTaskClue> toInsert = new ArrayList<>();
Map<String, List<ClueData>> mapPerson = new WeakHashMap<>(); Map<String, List<ClueData>> mapPerson = new WeakHashMap<>();
for (GBaseZDRY ry : list) { for (GBaseZDRY ry : list) {
RiskPersonal person = personalMap.get(ry.getSfzh()); RiskPersonal person = personalMap.get(ry.getSfzh());
if (person == null) { if (person == null) continue;
continue;
}
List<String> codes = PatternUtil.takeMarkPositionToString(ry.getZdrylbbj()); List<String> codes = PatternUtil.takeMarkPositionToString(ry.getZdrylbbj());
if (codes.isEmpty()) { if (codes.isEmpty()) continue;
continue;
}
List<RiskModelTaskClue> oldList = personMap.get(ry.getSfzh());
if (oldList != null) {
continue;
}
codes = codes.stream().distinct().toList();
for (String index : codes) { for (String index : codes) {
WdpcGrjdZblx zblx = map.get(index); WdpcGrjdZblx zblx = map.get(index);
if (zblx == null) { if (zblx == null) continue;
continue;
}
ClueData data = ClueData.builder() ClueData data = ClueData.builder()
.id(index) .id(index)
.personId(person.getId()) .personId(person.getId())
@ -206,17 +186,20 @@ public class PointServiceImpl implements PointService {
.build(); .build();
try { try {
data.setEventTime(LocalDateTime.parse(ry.getJlbgsj(), DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); data.setEventTime(LocalDateTime.parse(ry.getJlbgsj(), DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
} catch (Exception ignored) { } catch (Exception ignored) {}
}
mapPerson.computeIfAbsent(person.getIdCode(), k -> new ArrayList<>()).add(data); mapPerson.computeIfAbsent(person.getIdCode(), k -> new ArrayList<>()).add(data);
} }
} }
List<RiskModelTaskClue> toInsert = new ArrayList<>();
List<RiskModelTaskClue> toUpdate = new ArrayList<>();
for (Map.Entry<String, List<ClueData>> entry : mapPerson.entrySet()) { for (Map.Entry<String, List<ClueData>> entry : mapPerson.entrySet()) {
LocalDateTime tmpDateTime = null; List<ClueData> tmp = entry.getValue().stream().filter(StreamUtil.distinctByKey(ClueData::getTag)).sorted().toList();
List<ClueData> tmp = entry.getValue().stream().filter(StreamUtil.distinctByKey(ClueData::getTag)).toList();
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
int score = 0; int score = 0;
List<String> tags = new ArrayList<>(); List<String> tags = new ArrayList<>();
LocalDateTime tmpDateTime = null;
for (ClueData clue : tmp) { for (ClueData clue : tmp) {
tags.add(clue.getTag()); tags.add(clue.getTag());
sb.append(clue.getTag()).append(","); sb.append(clue.getTag()).append(",");
@ -229,15 +212,28 @@ public class PointServiceImpl implements PointService {
tmpDateTime = clue.getEventTime(); tmpDateTime = clue.getEventTime();
} }
} }
RiskModelTaskClue old = oldMap.get(entry.getKey());
if(old != null && old.getData().contentEquals(sb)) {
oldMap.remove(entry.getKey());
continue;
}
if(old!= null) {
oldMap.remove(entry.getKey());
RiskModelTaskClue update = new RiskModelTaskClue();
update.setId(old.getId());
update.setData(sb.substring(0, sb.length() - 1));
update.setScore(Math.min(5, score));
toUpdate.add(update);
continue;
}
RiskPersonal person = personalMap.get(entry.getKey());
toInsert.add(DataUtil.createClueData(task, ClueData.builder() toInsert.add(DataUtil.createClueData(task, ClueData.builder()
// 案件编号、接警单编号之类
.id("")
.score(Math.min(5, score)) .score(Math.min(5, score))
.personId(tmp.getFirst().getPersonId()) .personId(person.getId())
.tags(tags) .tags(tags)
.sourceData(sb.substring(0, sb.length() - 1)) .sourceData(sb.substring(0, sb.length() - 1))
.name(tmp.getFirst().getName()) .name(person.getName())
.idCode(tmp.getFirst().getIdCode()) .idCode(person.getIdCode())
.eventTime(tmpDateTime) .eventTime(tmpDateTime)
.build())); .build()));
} }
@ -245,7 +241,26 @@ public class PointServiceImpl implements PointService {
log.info("保存重点人员标签 {}", toInsert.size()); log.info("保存重点人员标签 {}", toInsert.size());
modelTaskClueService.saveClues(toInsert, "B12列管原因"); modelTaskClueService.saveClues(toInsert, "B12列管原因");
} }
taskRepository.updateTask(task.getId(), toInsert.size(), 0); if (!toUpdate.isEmpty()) {
log.info("修改重点人员标签 {}", toUpdate.size());
modelTaskClueService.updateClues(toUpdate, task.getModelId());
}
List<RiskModelTaskClue> toDelete = new ArrayList<>();
List<String> deleteIdCodes = new ArrayList<>();
for (Map.Entry<String, RiskModelTaskClue> entry : oldMap.entrySet()) {
RiskModelTaskClue delete = new RiskModelTaskClue();
delete.setId(entry.getValue().getId());
delete.setDel(1);
deleteIdCodes.add(entry.getValue().getIdCode());
toDelete.add(delete);
}
if (!toDelete.isEmpty()) {
log.info("删除重点人员标签 {}", toDelete.size());
modelTaskClueService.deleteCluesAndDeleteTag(toDelete, deleteIdCodes, task.getModelId());
}
taskRepository.updateTask(task.getId(), toInsert.size(), toUpdate.size()+toDelete.size());
} }
@Override @Override
@ -286,7 +301,6 @@ public class PointServiceImpl implements PointService {
} }
ClueData data = ClueData.builder() ClueData data = ClueData.builder()
.name(person.getName()) .name(person.getName())
.id("")
.personId(person.getId()) .personId(person.getId())
.idCode(person.getIdCode()) .idCode(person.getIdCode())
.sourceData(desc) .sourceData(desc)
@ -315,7 +329,7 @@ public class PointServiceImpl implements PointService {
log.info("删除暴力伤害行为数据{}条", toDelete.size()); log.info("删除暴力伤害行为数据{}条", toDelete.size());
modelTaskClueService.deleteCluesAndDeleteTag(toDelete, deleteIdCodes, task.getModelId()); modelTaskClueService.deleteCluesAndDeleteTag(toDelete, deleteIdCodes, task.getModelId());
} }
taskRepository.updateTask(task.getId(), toInsert.size(), toDelete.size()+toUpdate.size()); taskRepository.updateTask(task.getId(), toInsert.size(), toDelete.size() + toUpdate.size());
} }
@Override @Override
@ -1756,72 +1770,52 @@ public class PointServiceImpl implements PointService {
taskRepository.updateTask(task.getId(), toInsert.size(), 0); taskRepository.updateTask(task.getId(), toInsert.size(), 0);
} }
@Override
public void syncDrug(TaskParamDomain domain) {
RiskTask task = taskRepository.create(domain.getPersons().size(), 37);
Map<String, RiskModelTaskClue> oldMap = domain.getOldMap(task.getModelId(), true);
Map<String, Integer> idCode = new HashMap<>();
List<Drug> list = zdryRepository.getBaseMapper().selectDrugMan();
Map<String, RiskPersonal> personalMap = domain.getPersons().stream().collect(Collectors.toMap(RiskPersonal::getIdCode, Function.identity(), (old, newVal) -> newVal));
List<RiskModelTaskClue> toInsert = new ArrayList<>();
for (Drug drug : list) {
RiskPersonal personal = personalMap.get(drug.getSfzh());
if (personal == null) continue;
if (idCode.get(drug.getSfzh()) != null) continue;
if (oldMap.get(drug.getSfzh()) != null) continue;
idCode.put(drug.getSfzh(), 1);
ClueData data = ClueData.builder()
.name(personal.getName())
.id(personal.getId().toString())
.idCode(personal.getIdCode())
.tag("涉药人员")
.eventTime(LocalDateTime.now())
.personId(personal.getId())
.sourceData("发现该人员于" + drug.getGzdw() + "工作,属于特种工种中的涉药人员")
.build();
toInsert.add(createClue(task.getModelId(), 5, task.getId(), data));
}
if (!toInsert.isEmpty()) {
modelTaskClueService.saveClues(toInsert, Default.IMPORT_IG);
}
taskRepository.updateTask(task.getId(), toInsert.size(), 0);
}
@Override @Override
public void syncControlNoPower(TaskParamDomain domain) { public void syncControlNoPower(TaskParamDomain domain) {
RiskTask task = taskRepository.create(domain.getPersons().size(), 48); RiskTask task = taskRepository.create(domain.getPersons().size(), 48);
Map<String, RiskModelTaskClue> oldMap = domain.getOldMap(task.getModelId(), true); Map<String, RiskModelTaskClue> oldMap = domain.getOldMap(task.getModelId(), true);
Map<String, Integer> idCode = new HashMap<>(); HashSet<String> idCode = new HashSet<>();
List<GBaseZDRY> list = zdryRepository.getBaseMapper().noPower(); List<GBaseZDRY> list = zdryRepository.getBaseMapper().noPower();
Map<String, RiskPersonal> personalMap = domain.getPersons().stream().collect(Collectors.toMap(RiskPersonal::getIdCode, Function.identity(), (old, newVal) -> newVal)); Map<String, RiskPersonal> personalMap = domain.getPersons().stream().collect(Collectors.toMap(RiskPersonal::getIdCode, Function.identity(), (old, newVal) -> newVal));
List<RiskModelTaskClue> toInsert = new ArrayList<>(); List<RiskModelTaskClue> toInsert = new ArrayList<>();
List<RiskModelTaskClue> toDelete = new ArrayList<>();
List<String> deleteIdCodes = new ArrayList<>();
for (GBaseZDRY gBaseZDRY : list) { for (GBaseZDRY gBaseZDRY : list) {
RiskPersonal personal = personalMap.get(gBaseZDRY.getSfzh()); RiskPersonal personal = personalMap.get(gBaseZDRY.getSfzh());
if (personal == null) continue; if (personal == null) continue;
if (idCode.get(gBaseZDRY.getSfzh()) != null) continue; if (idCode.contains(gBaseZDRY.getSfzh())) continue;
if (oldMap.get(gBaseZDRY.getSfzh()) != null) continue; idCode.add(gBaseZDRY.getSfzh());
idCode.put(gBaseZDRY.getSfzh(), 1); if (oldMap.get(gBaseZDRY.getSfzh()) != null) {
oldMap.remove(gBaseZDRY.getSfzh());
ClueData data = ClueData.builder() continue;
}
toInsert.add(DataUtil.createClueData(task, ClueData.builder()
.name(personal.getName()) .name(personal.getName())
.id(personal.getId().toString()) .id(personal.getId().toString())
.idCode(personal.getIdCode()) .idCode(personal.getIdCode())
.tags(List.of("重点对象日常管控不到位")) .tags(List.of("重点对象日常管控不到位"))
.personId(personal.getId()) .personId(personal.getId())
.score(5) .score(5)
.eventTime(LocalDateTime.of(2024, 10, 7, 12, 11, 23))
.sourceData("发现该人员属于重点人员,该人员的管控民警所管控的重点人员达到100人以上\n属于未落实日常管控要求") .sourceData("发现该人员属于重点人员,该人员的管控民警所管控的重点人员达到100人以上\n属于未落实日常管控要求")
.build(); .build()));
toInsert.add(DataUtil.createClueData(task, data)); }
for (Map.Entry<String, RiskModelTaskClue> entry : oldMap.entrySet()) {
RiskModelTaskClue clue = new RiskModelTaskClue();
clue.setId(entry.getValue().getId());
clue.setDel(1);
toDelete.add(clue);
deleteIdCodes.add(entry.getValue().getIdCode());
} }
if (!toInsert.isEmpty()) { if (!toInsert.isEmpty()) {
log.info("增加特定对象日常管控不到位人员:{}", toInsert.size()); log.info("增加特定对象日常管控不到位人员:{}", toInsert.size());
modelTaskClueService.saveClues(toInsert, Default.CONTROLLER_IG); modelTaskClueService.saveClues(toInsert, Default.CONTROLLER_IG);
} }
taskRepository.updateTask(task.getId(), toInsert.size(), 0); if (!toDelete.isEmpty()) {
log.info("删除特定对象日常管控不到位人员:{}", toDelete.size());
modelTaskClueService.deleteCluesAndDeleteTag(toDelete, deleteIdCodes, task.getModelId());
}
taskRepository.updateTask(task.getId(), toInsert.size(), toDelete.size());
} }
private final RiskTestRepository riskTestRepository; private final RiskTestRepository riskTestRepository;
@ -1933,134 +1927,76 @@ public class PointServiceImpl implements PointService {
.ge(GBaseOilBuy::getTime, currentTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")))); .ge(GBaseOilBuy::getTime, currentTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))));
RiskTask task = taskRepository.create(buys.size(), 52); RiskTask task = taskRepository.create(buys.size(), 52);
// 旧数据 // 旧数据
List<RiskModelTaskClue> oldList = Optional.ofNullable(domain.getMap().get(task.getModelId())).orElse(new ArrayList<>()); Map<String, RiskModelTaskClue> oldMap = domain.getOldMap(task.getModelId(), true);
Map<String, RiskModelTaskClue> oldMap = oldList.stream().collect(Collectors.toMap(RiskModelTaskClue::getIdCode, Function.identity(), (val, old) -> val));
Map<String, List<GBaseOilBuy>> buyMap = buys.stream().collect(Collectors.groupingBy(GBaseOilBuy::getIdCode)); Map<String, List<GBaseOilBuy>> buyMap = buys.stream().collect(Collectors.groupingBy(GBaseOilBuy::getIdCode));
List<String> idCards = buyMap.keySet().stream().collect(Collectors.toList()); List<String> idCards = new ArrayList<>(buyMap.keySet());
List<String> carMaster = new ArrayList<>(); List<String> carMaster = new ArrayList<>();
// 车主 // 车主
if (!idCards.isEmpty()) { if (!idCards.isEmpty()) {
carMaster.addAll(zdryRepository.getBaseMapper().syncCarUser(idCards)); carMaster.addAll(zdryRepository.getBaseMapper().syncCarUser(idCards));
} }
HashSet<String> carMt = new HashSet<>(); Set<String> carMt = new HashSet<>(carMaster);
for (String s : carMaster) {
carMt.add(s);
}
// 新增记录 // 新增记录
List<RiskModelTaskClue> toInsert = new ArrayList<>(); List<RiskModelTaskClue> toInsert = new ArrayList<>();
List<RiskModelTaskClue> toUpdate = new ArrayList<>();
List<RiskModelTaskClue> toDelete = new ArrayList<>();
List<String> toDeleteIdCodes = new ArrayList<>();
for (RiskPersonal person : domain.getPersons()) { for (RiskPersonal person : domain.getPersons()) {
if (oldMap.get(person.getIdCode()) != null) {
continue;
}
List<GBaseOilBuy> mineBuy = buyMap.get(person.getIdCode()); List<GBaseOilBuy> mineBuy = buyMap.get(person.getIdCode());
if (mineBuy == null) { if (mineBuy == null || mineBuy.size() <= 0 || carMt.contains(person.getIdCode())) continue;
String desc = "发现该人员属于无车人员,近3月内买了" + mineBuy.size() + "次散装油";
RiskModelTaskClue old = oldMap.get(person.getIdCode());
if (old != null && old.getData().equals(desc)) {
oldMap.remove(person.getIdCode());
continue; continue;
} }
LocalDateTime time = null; if (old != null) {
int count = 0; oldMap.remove(person.getIdCode());
for (GBaseOilBuy item : mineBuy) { RiskModelTaskClue update = new RiskModelTaskClue();
if (carMt.contains(person.getIdCode())) { update.setId(old.getId());
continue; update.setUpdateTime(LocalDateTime.now());
} update.setData(desc);
count++; update.setScore(Math.min(5, mineBuy.size()));
try { toUpdate.add(update);
LocalDateTime tmp = LocalDateTime.parse(item.getTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
if (time == null) {
time = tmp;
continue;
}
if (tmp.isAfter(time)) {
time = tmp;
}
} catch (Exception e) {
log.error("散装油时间转化异常");
}
}
if (count <= 0) {
continue; continue;
} }
ClueData data = ClueData.builder() toInsert.add(DataUtil.createClueData(task, ClueData.builder()
.name(person.getName()) .name(person.getName())
.id("")
.idCode(person.getIdCode()) .idCode(person.getIdCode())
.score(Math.min(5, count)) .score(Math.min(5, mineBuy.size()))
.tags(List.of(Default.NO_CAR_OIL_BUY)) .tags(List.of(Default.NO_CAR_OIL_BUY))
.personId(person.getId()) .personId(person.getId())
.sourceData("发现该人员属于无车人员,买了" + count + "次散装油") .sourceData(desc)
.eventTime(time) .build()));
.build(); }
toInsert.add(DataUtil.createClueData(task, data));
for (Map.Entry<String, RiskModelTaskClue> entry : oldMap.entrySet()) {
RiskModelTaskClue delete = new RiskModelTaskClue();
delete.setId(entry.getValue().getId());
delete.setDel(1);
toDelete.add(delete);
toDeleteIdCodes.add(entry.getValue().getIdCode());
} }
if (!toInsert.isEmpty()) { if (!toInsert.isEmpty()) {
log.info("增加散装油人员:{}", toInsert.size()); log.info("增加散装油人员:{}", toInsert.size());
modelTaskClueService.saveClues(toInsert, Default.GOODS_IG); modelTaskClueService.saveClues(toInsert, Default.GOODS_IG);
} }
taskRepository.updateTask(task.getId(), toInsert.size(), 0); if (!toUpdate.isEmpty()) {
} log.info("修改散装油人员:{}", toUpdate.size());
modelTaskClueService.updateClues(toUpdate, task.getModelId());
@Override
public void syncSecurity(TaskParamDomain domain) {
List<SecurityMan> securityList = new ArrayList<>();
CompletableFuture.allOf(
CompletableFutureUtil.runSyncObject(() -> securityList.addAll(zdryRepository.getBaseMapper().syncSecurityMan1())),
CompletableFutureUtil.runSyncObject(() -> securityList.addAll(zdryRepository.getBaseMapper().syncSecurityMan2()))
).join();
Map<String, List<SecurityMan>> map = securityList.stream().collect(Collectors.groupingBy(SecurityMan::getIdCode));
RiskTask task = taskRepository.create(map.size(), 37);
Map<String, RiskModelTaskClue> oldMap = domain.getOldMap(task.getModelId(), false);
List<RiskModelTaskClue> toInsert = new ArrayList<>();
for (RiskPersonal person : domain.getPersons()) {
List<SecurityMan> mans = map.get(person.getIdCode());
if (mans == null || oldMap.get(person.getIdCode()) != null) {
continue;
}
SecurityMan real = null;
for (SecurityMan man : mans) {
if (real == null) {
real = man;
continue;
}
if (man.getDataSource() == 1) {
real = man;
break;
}
}
ClueData data = ClueData.builder()
.name(person.getName())
.id("security")
.tag(Default.BA_TAG)
.idCode(person.getIdCode())
.departId(person.getControlDepartId())
.departName(person.getControlDepartName())
.personId(person.getId())
.sourceData("发现该人员为保安人员,职位为:" + real.getJob() + ",属于特种职业")
.build();
try {
if (real.getTime().indexOf("-") != -1) {
data.setEventTime(LocalDate.parse(real.getTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd")).atTime(0, 0, 0));
} else if (real.getTime().indexOf(".") != -1) {
data.setEventTime(LocalDate.parse(real.getTime(), DateTimeFormatter.ofPattern("yyyy.M.d")).atTime(0, 0, 0));
} else {
data.setEventTime(LocalDate.parse(real.getTime(), DateTimeFormatter.ofPattern("yyyy年MM月dd日")).atTime(0, 0, 0));
}
} catch (Exception e) {
log.info("保安日期异常");
}
toInsert.add(createClue(task.getModelId(), 5, task.getId(), data));
} }
if (!toDelete.isEmpty()) {
// 新增 log.info("删除散装油人员:{}", toDelete.size());
if (!toInsert.isEmpty()) { modelTaskClueService.deleteCluesAndDeleteTag(toDelete, toDeleteIdCodes, task.getModelId());
log.info("新增保安人员:{}", toInsert.size());
modelTaskClueService.saveClues(toInsert, Default.IMPORT_IG);
} }
taskRepository.updateTask(task.getId(), toInsert.size(), 0); taskRepository.updateTask(task.getId(), toInsert.size(), toUpdate.size() + toDelete.size());
} }
@Override @Override
@ -2070,10 +2006,7 @@ public class PointServiceImpl implements PointService {
RiskTask task = taskRepository.create(carUsers.size(), 53); RiskTask task = taskRepository.create(carUsers.size(), 53);
Map<String, RiskModelTaskClue> clueMap = domain.getOldMap(task.getModelId(), true); Map<String, RiskModelTaskClue> clueMap = domain.getOldMap(task.getModelId(), true);
HashSet<String> exist = new HashSet<>(); HashSet<String> exist = new HashSet<>(carUsers);
for (String carUser : carUsers) {
exist.add(carUser);
}
List<RiskModelTaskClue> toInsert = new ArrayList<>(); List<RiskModelTaskClue> toInsert = new ArrayList<>();
List<RiskModelTaskClue> toDelete = new ArrayList<>(); List<RiskModelTaskClue> toDelete = new ArrayList<>();
@ -2082,7 +2015,6 @@ public class PointServiceImpl implements PointService {
// 增加 // 增加
if (exist.contains(person.getIdCode()) && clueMap.get(person.getIdCode()) == null) { if (exist.contains(person.getIdCode()) && clueMap.get(person.getIdCode()) == null) {
toInsert.add(DataUtil.createClueData(task, ClueData.builder() toInsert.add(DataUtil.createClueData(task, ClueData.builder()
.id("")
.score(5) .score(5)
.personId(person.getId()) .personId(person.getId())
.tags(List.of(Default.CAR_TAG)) .tags(List.of(Default.CAR_TAG))
@ -2141,8 +2073,6 @@ public class PointServiceImpl implements PointService {
private final GBaseTbDZdrylbRepository zdrylbRepository; private final GBaseTbDZdrylbRepository zdrylbRepository;
private final SupExternalDepartRepository externalDepartRepository;
List<RiskPersonal> getPersons() { List<RiskPersonal> getPersons() {
List<GBaseTbDZdrylb> lbList = zdrylbRepository.list(new LambdaQueryWrapper<GBaseTbDZdrylb>() List<GBaseTbDZdrylb> lbList = zdrylbRepository.list(new LambdaQueryWrapper<GBaseTbDZdrylb>()
.select(GBaseTbDZdrylb::getCode, GBaseTbDZdrylb::getDefine)); .select(GBaseTbDZdrylb::getCode, GBaseTbDZdrylb::getDefine));
@ -2206,7 +2136,7 @@ public class PointServiceImpl implements PointService {
personal.setControlDepartId(depart.getInternalId()); personal.setControlDepartId(depart.getInternalId());
try { try {
personal.setControlTime(LocalDateTime.parse(ry.getJlbgsj(), DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); personal.setControlTime(LocalDateTime.parse(ry.getJlbgsj(), DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
} catch (Exception e) { } catch (Exception ignored) {
} }
// 基本信息 // 基本信息
try { try {
@ -2214,7 +2144,7 @@ public class PointServiceImpl implements PointService {
int gender = personal.getIdCode().length() == 18 ? Integer.valueOf(personal.getIdCode().substring(16, 17)) : Integer.valueOf(personal.getIdCode().substring(14, 15)); int gender = personal.getIdCode().length() == 18 ? Integer.valueOf(personal.getIdCode().substring(16, 17)) : Integer.valueOf(personal.getIdCode().substring(14, 15));
// 结果0男1女 余数偶女奇男 // 结果0男1女 余数偶女奇男
personal.setGender(gender % 2 == 0 ? "2" : "1"); personal.setGender(gender % 2 == 0 ? "2" : "1");
} catch (Exception e) { } catch (Exception ignored) {
} }
if (ry.getZdrylxfs() != null) { if (ry.getZdrylxfs() != null) {
String[] str = ry.getZdrylxfs().split(","); String[] str = ry.getZdrylxfs().split(",");
@ -2224,12 +2154,12 @@ public class PointServiceImpl implements PointService {
.filter(Character::isDigit) .filter(Character::isDigit)
.collect(StringBuilder::new, StringBuilder::appendCodePoint, StringBuilder::append) .collect(StringBuilder::new, StringBuilder::appendCodePoint, StringBuilder::append)
.toString(); .toString();
if (number.length() <= 8 || number.equals("00000000")) { if (number.length() <= 8) {
continue; continue;
} }
mobiles.append(m).append(","); mobiles.append(m).append(",");
} }
personal.setMobileNumber(mobiles.length() == 0 ? "" : mobiles.substring(0, mobiles.length() - 1)); personal.setMobileNumber(mobiles.isEmpty() ? "" : mobiles.substring(0, mobiles.length() - 1));
} }
personals.add(personal); personals.add(personal);
} }

2
src/main/java/com/biutag/supervisiondata/service/impl/RiskModelTaskClueServiceImpl.java

@ -129,7 +129,7 @@ public class RiskModelTaskClueServiceImpl implements RiskModelTaskClueService {
Map<Integer, ScoreRule> ruleMap = rules.stream().collect(Collectors.toMap(ScoreRule::getModelId, Function.identity(), (val, old) -> val)); Map<Integer, ScoreRule> ruleMap = rules.stream().collect(Collectors.toMap(ScoreRule::getModelId, Function.identity(), (val, old) -> val));
ScoreRule rule = ruleMap.get(modelId); ScoreRule rule = ruleMap.get(modelId);
for (RiskModelTaskClue clue : list) { for (RiskModelTaskClue clue : list) {
if (rule == null) continue; if (rule == null || clue.getScore() == null) continue;
BigDecimal score = new BigDecimal(clue.getScore().toString()); BigDecimal score = new BigDecimal(clue.getScore().toString());
BigDecimal weight = new BigDecimal(rule.getWeight().toString()); BigDecimal weight = new BigDecimal(rule.getWeight().toString());
score = score.multiply(new BigDecimal("20")) score = score.multiply(new BigDecimal("20"))

36
src/main/java/com/biutag/supervisiondata/service/impl/WdpcGrjdJsbryServiceService.java

@ -1,6 +1,5 @@
package com.biutag.supervisiondata.service.impl; package com.biutag.supervisiondata.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.biutag.supervisiondata.pojo.ClueData; import com.biutag.supervisiondata.pojo.ClueData;
import com.biutag.supervisiondata.pojo.constants.Default; import com.biutag.supervisiondata.pojo.constants.Default;
import com.biutag.supervisiondata.pojo.domain.TaskParamDomain; import com.biutag.supervisiondata.pojo.domain.TaskParamDomain;
@ -23,7 +22,6 @@ import java.time.format.DateTimeFormatter;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Optional;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -48,24 +46,26 @@ public class WdpcGrjdJsbryServiceService implements WdpcGrjdJsbryService {
List<WdpcGrjdJsbry> jsbryList = jsbryRepository.getBaseMapper().selectJSB(); List<WdpcGrjdJsbry> jsbryList = jsbryRepository.getBaseMapper().selectJSB();
RiskTask task = taskRepository.create(jsbryList.size(), 59); RiskTask task = taskRepository.create(jsbryList.size(), 59);
List<RiskModelTaskClue> oldList = Optional.ofNullable(domain.getMap().get(task.getModelId())).orElse(new ArrayList<>()); Map<String, RiskModelTaskClue> oldClueMap = domain.getOldMap(task.getModelId(), true);
Map<String, RiskModelTaskClue> oldClueMap = oldList.stream().collect(Collectors.toMap(RiskModelTaskClue::getIdCode, Function.identity(), (val, old) -> val));
Map<String, RiskPersonal> personalMap = domain.getPersons().stream().collect(Collectors.toMap(RiskPersonal::getIdCode, Function.identity(), (val, old) -> val)); Map<String, RiskPersonal> personalMap = domain.getPersons().stream().collect(Collectors.toMap(RiskPersonal::getIdCode, Function.identity(), (val, old) -> val));
List<RiskModelTaskClue> toInsert = new ArrayList<>(); List<RiskModelTaskClue> toInsert = new ArrayList<>();
List<RiskModelTaskClue> toDelete = new ArrayList<>();
List<String> toDeleteIdCards = new ArrayList<>();
for (WdpcGrjdJsbry entry : jsbryList) { for (WdpcGrjdJsbry entry : jsbryList) {
RiskPersonal personal = personalMap.get(entry.getIdCode()); RiskPersonal personal = personalMap.get(entry.getIdCode());
if (oldClueMap.get(entry.getIdCode()) != null || personal == null) { if(personal == null) continue;
if (oldClueMap.get(entry.getIdCode()) != null ) {
oldClueMap.remove(entry.getIdCode());
continue; continue;
} }
LocalDateTime time = null; LocalDateTime time = null;
try { try {
time = LocalDate.parse(entry.getActualTime(), DateTimeFormatter.ofPattern("yyyyMMdd")).atTime(0, 0, 0); time = LocalDate.parse(entry.getActualTime(), DateTimeFormatter.ofPattern("yyyyMMdd")).atTime(0, 0, 0);
} catch (Exception e) {} } catch (Exception ignored) {}
ClueData data = ClueData.builder() toInsert.add(DataUtil.createClueData(task, ClueData.builder()
.name(personal.getName()) .name(personal.getName())
.id("psychosis") .id("psychosis")
.idCode(personal.getIdCode()) .idCode(personal.getIdCode())
@ -73,12 +73,24 @@ public class WdpcGrjdJsbryServiceService implements WdpcGrjdJsbryService {
.score(5) .score(5)
.sourceData("该人员是精神障碍患者,诊断为:".concat(entry.getActualId())) .sourceData("该人员是精神障碍患者,诊断为:".concat(entry.getActualId()))
.eventTime(time) .eventTime(time)
.build(); .build()));
toInsert.add(DataUtil.createClueData(task, data)); }
for (Map.Entry<String, RiskModelTaskClue> entry : oldClueMap.entrySet()) {
RiskModelTaskClue delete = new RiskModelTaskClue();
delete.setId(entry.getValue().getId());
delete.setDel(1);
toDelete.add(delete);
toDeleteIdCards.add(entry.getValue().getIdCode());
} }
if (!toInsert.isEmpty()) { if (!toInsert.isEmpty()) {
log.info("新增精神病患者{}条", toInsert.size());
clueService.saveClues(toInsert, "B31是否有精神疾病"); clueService.saveClues(toInsert, "B31是否有精神疾病");
} }
taskRepository.updateTask(task.getId(), toInsert.size(), 0); if (!toDelete.isEmpty()) {
log.info("删除精神病患者{}条", toDelete.size());
clueService.deleteCluesAndDeleteTag(toDelete, toDeleteIdCards, task.getModelId());
}
taskRepository.updateTask(task.getId(), toInsert.size(), toDelete.size());
} }
} }

13
src/main/java/com/biutag/supervisiondata/task/TaskService.java

@ -95,6 +95,9 @@ public class TaskService {
@Resource @Resource
private NoControlService noControlService; private NoControlService noControlService;
@Resource
private WdpcGrjdJsbryService jsbryService;
/** /**
* 2点更新模型 * 2点更新模型
*/ */
@ -102,8 +105,11 @@ public class TaskService {
public void modelRefresh() { public void modelRefresh() {
LocalDateTime fiveYearsAgo = LocalDateTime.now().minusYears(5); LocalDateTime fiveYearsAgo = LocalDateTime.now().minusYears(5);
CompletableFutureUtil.runSync(() -> { CompletableFutureUtil.runSync(() -> {
// 文化程度和出生地区
riskTaskService.eduAndAreaModelTask(initDomain(List.of(34,41))); riskTaskService.eduAndAreaModelTask(initDomain(List.of(34,41)));
// 性别和年龄
riskTaskService.infoModelTask(initDomain(List.of(32,33))); riskTaskService.infoModelTask(initDomain(List.of(32,33)));
// 婚姻创伤和婚姻状态
marriageService.marriageModelTask(initDomain(List.of(39,51))); marriageService.marriageModelTask(initDomain(List.of(39,51)));
// 五年内酒、赌博、嫖娼案件,一年内酒案件 // 五年内酒、赌博、嫖娼案件,一年内酒案件
habitService.syncBadHabit(fiveYearsAgo, initDomain(List.of(36,60,61,62))); habitService.syncBadHabit(fiveYearsAgo, initDomain(List.of(36,60,61,62)));
@ -111,6 +117,13 @@ public class TaskService {
pointService.syncScore(initDomain(List.of(43))); pointService.syncScore(initDomain(List.of(43)));
pointService.syncViolence(initDomain(List.of(44))); pointService.syncViolence(initDomain(List.of(44)));
noControlService.syncNoControlData(initDomain(List.of(45))); noControlService.syncNoControlData(initDomain(List.of(45)));
pointService.syncControlNoPower(initDomain(List.of(48)));
pointService.syncOilBuy(initDomain(List.of(52)));
jsbryService.syncPys(initDomain(List.of(59)));
gBaseSHRWFRService.combatCrime(initDomain(List.of(63)));
pointService.syncPointType(initDomain(List.of(67)));
gBaseJJDService.syncOtherContradict(initDomain(List.of(75)));
gBaseSHRWFRService.crimeName(initDomain(List.of(76)));
}); });
} }

Loading…
Cancel
Save