Browse Source

父母关系

master
kami 1 year ago
parent
commit
da954b7d47
  1. 44
      src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseJJDMapper.java
  2. 10
      src/main/java/com/biutag/supervisiondata/service/GBaseJJDService.java
  3. 156
      src/main/java/com/biutag/supervisiondata/service/impl/GBaseJJDServiceImpl.java
  4. 2
      src/main/java/com/biutag/supervisiondata/service/impl/GBaseSHRWFRServiceImpl.java

44
src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseJJDMapper.java

@ -77,4 +77,48 @@ public interface GBaseJJDMapper extends BaseMapper<GBaseJJD> {
*/ */
@Select(" select jjdbh, bjdh,bjrxm ,bjrzjhm, bjnr, cjqk, bjsj from dwd_asj_zhtx_jjd where (bjnr like '%家暴%' or cjqk like '%家暴%' or jqxzmc like '%家庭暴力%' or cjqk like '%家庭暴力%' or bjnr like '%家庭暴力%') and SUBSTR(jqxzdm, 1, 2) != '99' and bjsj >= #{start}") @Select(" select jjdbh, bjdh,bjrxm ,bjrzjhm, bjnr, cjqk, bjsj from dwd_asj_zhtx_jjd where (bjnr like '%家暴%' or cjqk like '%家暴%' or jqxzmc like '%家庭暴力%' or cjqk like '%家庭暴力%' or bjnr like '%家庭暴力%') and SUBSTR(jqxzdm, 1, 2) != '99' and bjsj >= #{start}")
List<GBaseJJD> selectHomeViolence(@Param("start")String start); List<GBaseJJD> selectHomeViolence(@Param("start")String start);
@Select(" select jjdbh, bjdh,bjrxm ,bjrzjhm, bjnr, cjqk, bjsj from dwd_asj_zhtx_jjd " +
" where jqxzmc like '%纠纷%' and SUBSTR(jqxzdm, 1, 2) != '99' and bjsj >= #{start} and " +
" (bjnr like '%与父亲%' or cjqk like '%与父亲%' or " +
" bjnr like '%和父亲%' or cjqk like '%和父亲%' or " +
" bjnr like '%与爸爸%' or cjqk like '%与爸爸%' or " +
" bjnr like '%和爸爸%' or cjqk like '%和爸爸%' or " +
" ((bjnr like '%和儿子%' or cjqk like '%和儿子%' or bjnr like '%与儿子%' or cjqk like '%与儿子%' or " +
" bjnr like '%和女儿%' or cjqk like '%和女儿%' or bjnr like '%与女儿%' or cjqk like '%与女儿%' or" +
" bjnr like '%和子女%' or cjqk like '%和子女%' or bjnr like '%与子女%' or cjqk like '%与子女%') and ( " +
" bjnr like '%系父亲%' or cjqk like '%系父亲%' or bjnr like '%系爸爸%' or cjqk like '%系爸爸%' or " +
" bjnr like '%是父亲%' or cjqk like '%是父亲%' or bjnr like '%是爸爸%' or cjqk like '%是爸爸%')) ")
List<GBaseJJD> selectFatherRelation(@Param("start")String start);
@Select(" select jjdbh, bjdh,bjrxm ,bjrzjhm, bjnr, cjqk, bjsj from dwd_asj_zhtx_jjd " +
" where jqxzmc like '%纠纷%' and SUBSTR(jqxzdm, 1, 2) != '99' and bjsj >= #{start} and " +
" (bjnr like '%与母亲%' or cjqk like '%与母亲%' or " +
" bjnr like '%和母亲%' or cjqk like '%和母亲%' or " +
" bjnr like '%与妈妈%' or cjqk like '%与妈妈%' or " +
" bjnr like '%和妈妈%' or cjqk like '%和妈妈%' or " +
" ((bjnr like '%和儿子%' or cjqk like '%和儿子%' or bjnr like '%与儿子%' or cjqk like '%与儿子%' or " +
" bjnr like '%和女儿%' or cjqk like '%和女儿%' or bjnr like '%与女儿%' or cjqk like '%与女儿%' or" +
" bjnr like '%和子女%' or cjqk like '%和子女%' or bjnr like '%与子女%' or cjqk like '%与子女%') and (" +
" bjnr like '%系母亲%' or cjqk like '%系母亲%' or bjnr like '%系妈妈%' or cjqk like '%系妈妈%' or " +
" bjnr like '%是母亲%' or cjqk like '%是母亲%' or bjnr like '%是妈妈%' or cjqk like '%是妈妈%')) ")
List<GBaseJJD> selectMotherRelation(@Param("start")String start);
/**
* 婚姻纠纷
* @param start 开始时间
* @return
*/
@Select(" select jjdbh, bjdh,bjrxm ,bjrzjhm, bjnr, cjqk, bjsj from dwd_asj_zhtx_jjd " +
" where (jqxzmc like '%感情%' or jqxzmc like '%婚姻%') and SUBSTR(jqxzdm, 1, 2) != '99' and bjsj >= #{start} ")
List<GBaseJJD> selectMarryDispute(@Param("start")String start);
/**
* 恋爱纠纷
* @param start 开始时间
* @return
*/
@Select(" select jjdbh, bjdh,bjrxm ,bjrzjhm, bjnr, cjqk, bjsj from dwd_asj_zhtx_jjd" +
" where (bjnr like '%失恋%' or cjqk like '%失恋%' or bjnr like '%分手%' or cjqk like '%分手%') " +
" and SUBSTR(jqxzdm, 1, 2) != '99' and bjsj >= #{start} ")
List<GBaseJJD> selectLoveDispute(@Param("start")String start);
} }

10
src/main/java/com/biutag/supervisiondata/service/GBaseJJDService.java

@ -18,16 +18,26 @@ public interface GBaseJJDService {
void pullAndSave(LocalDateTime start, LocalDateTime end); void pullAndSave(LocalDateTime start, LocalDateTime end);
/** /**
* 同步警情 厌世报复自杀遭遇不公 * 同步警情 厌世报复自杀遭遇不公
* @param start 接警开始范围
* @param end 接警结束范围
*/ */
void pullDataAndSaveRedis(LocalDateTime start, LocalDateTime end); void pullDataAndSaveRedis(LocalDateTime start, LocalDateTime end);
void pullPoliceInstance(LocalDateTime start, LocalDateTime end); void pullPoliceInstance(LocalDateTime start, LocalDateTime end);
/** /**
* 攻击警察 * 攻击警察
* @param domain domain
*/ */
void syncPoliceAttack(TaskParamDomain domain); void syncPoliceAttack(TaskParamDomain domain);
/** /**
* 家暴 * 家暴
* @param domain domain
*/ */
void syncHomeViolence(TaskParamDomain domain); void syncHomeViolence(TaskParamDomain domain);
/**
* 与父母关系
* @param domain domain
*/
void syncParentRelation(TaskParamDomain domain);
} }

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

@ -28,6 +28,7 @@ import com.biutag.supervisiondata.util.OrgUtil;
import com.biutag.supervisiondata.util.PatternUtil; import com.biutag.supervisiondata.util.PatternUtil;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.cglib.core.Local;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.time.LocalDate; import java.time.LocalDate;
@ -544,6 +545,161 @@ public class GBaseJJDServiceImpl implements GBaseJJDService {
taskRepository.updateTask(task2.getId(), toInsert.size(), toUpdate2.size()); taskRepository.updateTask(task2.getId(), toInsert.size(), toUpdate2.size());
} }
@Override
public void syncParentRelation(TaskParamDomain domain) {
String startTime = LocalDateTime.of(2023, 12, 6, 0, 0, 0).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
// LocalDateTime limit = LocalDateTime.now().minusYears(1);
List<GBaseJJD> fathers = gBaseJJDRepository.getBaseMapper().selectFatherRelation(startTime);
List<GBaseJJD> mothers = gBaseJJDRepository.getBaseMapper().selectMotherRelation(startTime);
RiskTask task = taskRepository.create(fathers.size(), 69);
RiskTask task2 = taskRepository.create(mothers.size(), 70);
// ****父亲矛盾*****
Map<String, List<GBaseJJD>> fatherIdCodeMap = findTargetJJD(fathers);
// ****母亲矛盾*****
Map<String, List<GBaseJJD>> motherIdCodeMap = findTargetJJD(mothers);
List<RiskModelTaskClue> toInsert = eachClue2Save(domain, task, fatherIdCodeMap, "父亲");
List<RiskModelTaskClue> toInsert2 = eachClue2Save(domain, task2, motherIdCodeMap, "母亲");
if(!toInsert.isEmpty()) {
log.info("父亲矛盾增加 {}", toInsert.size());
clueService.saveClues(toInsert, "家庭、人际、两性关系");
}
if(!toInsert2.isEmpty()) {
log.info("母亲矛盾增加 {}", toInsert2.size());
clueService.saveClues(toInsert2, "家庭、人际、两性关系");
}
taskRepository.updateTask(task.getId(), toInsert.size(), 0);
taskRepository.updateTask(task2.getId(), toInsert2.size(), 0);
}
Map<String, List<GBaseJJD>> findTargetJJD(List<GBaseJJD> jjdList) {
Map<String, List<GBaseJJD>> fatherIdCodeMap = new WeakHashMap<>();
List<GBaseJJD> others = new ArrayList<>();
List<String> mobiles = new ArrayList<>();
// 第一轮排除掉有身份证的
for (GBaseJJD gBaseJJD : jjdList) {
boolean continueMobile = false;
String idCard = PatternUtil.takeIdCard(gBaseJJD.getCjqk());
if (idCard.isEmpty()) {
idCard = PatternUtil.takeIdCard(gBaseJJD.getBjnr());
}
if (!idCard.isEmpty()) {
// 找到身份证年龄小的
List<String> tmp = Arrays.stream(idCard.split(",")).toList();
switch (tmp.size()) {
case 0 -> continueMobile = true;
case 1 -> fatherIdCodeMap.computeIfAbsent(tmp.getFirst(), k -> new ArrayList<>()).add(gBaseJJD);
default -> fatherIdCodeMap.computeIfAbsent(findSmallOne(tmp), k -> new ArrayList<>()).add(gBaseJJD);
}
if(!continueMobile) {
continue;
}
}
String mobile = PatternUtil.takeMobile(gBaseJJD.getCjqk());
if (!mobile.isEmpty()) {
mobiles.addAll(Arrays.stream(mobile.split(",")).toList());
others.add(gBaseJJD);
continue;
}
mobile = PatternUtil.takeMobile(gBaseJJD.getBjnr());
if (!mobile.isEmpty()) {
mobiles.addAll(Arrays.stream(mobile.split(",")).toList());
others.add(gBaseJJD);
}
}
List<GBaseSYRKXX> xxList = gBaseSYRKXXRepository.list(new LambdaQueryWrapper<GBaseSYRKXX>()
.select(GBaseSYRKXX::getGmsfhm, GBaseSYRKXX::getLxdh).in(GBaseSYRKXX::getLxdh, mobiles));
Map<String, List<GBaseSYRKXX>> mobileRkMap = xxList.stream().collect(Collectors.groupingBy(GBaseSYRKXX::getLxdh));
// 第二轮通过手机号找身份证
for (GBaseJJD other : others) {
String mobile = PatternUtil.takeMobile(other.getCjqk());
if (mobile.isEmpty()) {
mobile = PatternUtil.takeMobile(other.getBjnr());
}
List<String> tmp = Arrays.stream(mobile.split(",")).toList();
List<String> idCard = new ArrayList<>();
for (String s : tmp) {
List<GBaseSYRKXX> arr = Optional.ofNullable(mobileRkMap.get(s)).orElse(new ArrayList<>());
idCard.addAll(arr.stream().map(GBaseSYRKXX::getGmsfhm).filter(Objects::nonNull).toList());
}
if(idCard.isEmpty()) {
continue;
}
fatherIdCodeMap.computeIfAbsent(findSmallOne(idCard), k -> new ArrayList<>()).add(other);
}
return fatherIdCodeMap;
}
List<RiskModelTaskClue> eachClue2Save(TaskParamDomain domain, RiskTask task,Map<String, List<GBaseJJD>> fatherIdCodeMap, String tag) {
List<RiskModelTaskClue> oldList = domain.getMap().get(task.getModelId());
Map<String, List<RiskModelTaskClue>> personMap = oldList.stream().collect(Collectors.groupingBy(RiskModelTaskClue::getIdCode));
List<RiskModelTaskClue> toInsert = new ArrayList<>();
for (RiskPersonal person : domain.getPersons()) {
List<GBaseJJD> jjdList = fatherIdCodeMap.get(person.getIdCode());
if(jjdList == null) {
continue;
}
List<RiskModelTaskClue> olds = Optional.ofNullable(personMap.get(person.getIdCode())).orElse(new ArrayList<>());
Map<String, RiskModelTaskClue> oldMap = olds.stream().collect(Collectors.toMap(RiskModelTaskClue::getCaseIds, Function.identity(), (val, old) -> val));
for (GBaseJJD jjd : jjdList) {
if(oldMap.get(BhUtil.jjdBh(jjd.getJjdbh())) != null) {
continue;
}
ClueData data = ClueData.builder()
.name(person.getName())
.id(BhUtil.jjdBh(jjd.getJjdbh()))
.idCode(person.getIdCode())
.tag("与"+tag+"存在矛盾")
.personId(person.getId())
.build();
StringBuilder sb = new StringBuilder("该人员与"+tag+"存在矛盾,接警单编号:" + jjd.getJjdbh());
if (jjd.getBjnr() != null && !jjd.getBjnr().isEmpty()) {
sb.append(",报警内容;" + jjd.getBjnr());
}
if (jjd.getCjqk() != null && !jjd.getCjqk().isEmpty()) {
sb.append(",处警情况;" + jjd.getCjqk());
}
sb.append(",增加风险分5分");
data.setSourceData(sb.toString());
try {
data.setEventTime(jjd.getBjsj().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());
} catch (Exception ignored) {
data.setEventTime(LocalDateTime.now());
}
toInsert.add(createClue(task.getModelId(), 5, task.getId(), data));
}
}
return toInsert;
}
String findSmallOne(List<String> list) {
LocalDate today = LocalDate.now();
String idCode = null;
int age = 0;
for (String s : list) {
if(idCode == null){
idCode = s;
age = Optional.ofNullable(IdCodeUtil.idCard2Age(s, today)).orElse(0);
continue;
}
int tmp = Optional.ofNullable(IdCodeUtil.idCard2Age(s, today)).orElse(0);
if(tmp < age) {
age = tmp;
idCode = s;
}
}
return idCode;
}
/** /**
* 手机要搜索的clue数据 * 手机要搜索的clue数据
* @param idCode 身份证Map * @param idCode 身份证Map

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

@ -373,7 +373,7 @@ public class GBaseSHRWFRServiceImpl implements GBaseSHRWFRService {
// 职业等级 // 职业等级
RiskTask task = taskRepository.create(domain.getPersons().size(), 37); RiskTask task = taskRepository.create(domain.getPersons().size(), 37);
// 有无职业 // 有无职业
RiskTask task2 = taskRepository.create(domain.getPersons().size(), 67); RiskTask task2 = taskRepository.create(domain.getPersons().size(), 68);
List<WdpcGrjdZblx> lxList = zblxRepository.list(new LambdaQueryWrapper<WdpcGrjdZblx>() List<WdpcGrjdZblx> lxList = zblxRepository.list(new LambdaQueryWrapper<WdpcGrjdZblx>()
.in(WdpcGrjdZblx::getLxdm, List.of("9", "12"))); .in(WdpcGrjdZblx::getLxdm, List.of("9", "12")));

Loading…
Cancel
Save