Browse Source

恋爱创伤、婚姻纠纷、邻里关系和同事矛盾

master
kami 1 year ago
parent
commit
2a45763f06
  1. 24
      src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseJJDMapper.java
  2. 15
      src/main/java/com/biutag/supervisiondata/service/GBaseJJDService.java
  3. 265
      src/main/java/com/biutag/supervisiondata/service/impl/GBaseJJDServiceImpl.java

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

@ -114,7 +114,7 @@ public interface GBaseJJDMapper extends BaseMapper<GBaseJJD> {
/** /**
* 婚姻纠纷 * 婚姻纠纷
* @param start 开始时间 * @param start 开始时间
* @return * @return 列表
*/ */
@Select(" select jjdbh, bjdh,bjrxm ,bjrzjhm, bjnr, cjqk, bjsj from dwd_asj_zhtx_jjd " + @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} ") " where (jqxzmc like '%感情%' or jqxzmc like '%婚姻%') and SUBSTR(jqxzdm, 1, 2) != '99' and bjsj >= #{start} ")
@ -122,10 +122,30 @@ public interface GBaseJJDMapper extends BaseMapper<GBaseJJD> {
/** /**
* 恋爱纠纷 * 恋爱纠纷
* @param start 开始时间 * @param start 开始时间
* @return * @return 列表
*/ */
@Select(" select jjdbh, bjdh,bjrxm ,bjrzjhm, bjnr, cjqk, bjsj from dwd_asj_zhtx_jjd" + @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 '%分手%') " + " where (bjnr like '%失恋%' or cjqk like '%失恋%' or bjnr like '%分手%' or cjqk like '%分手%') " +
" and SUBSTR(jqxzdm, 1, 2) != '99' and bjsj >= #{start} ") " and SUBSTR(jqxzdm, 1, 2) != '99' and bjsj >= #{start} ")
List<GBaseJJD> selectLoveDispute(@Param("start")String start); List<GBaseJJD> selectLoveDispute(@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 jqxzdm like '%纠纷%' and SUBSTR(jqxzdm, 1, 2) != '99' and bjsj >= #{start} ")
List<GBaseJJD> selectNeighborAndColleagueDispute(@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 '%欺凌%') " +
" and SUBSTR(jqxzdm, 1, 2) != '99' and bjsj >= #{start} ")
List<GBaseJJD> selectBullying(@Param("start")String start);
} }

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

@ -40,4 +40,19 @@ public interface GBaseJJDService {
* @param domain domain * @param domain domain
*/ */
void syncParentRelation(TaskParamDomain domain); void syncParentRelation(TaskParamDomain domain);
/**
* 恋爱创伤
* @param domain domain
*/
void syncLove(TaskParamDomain domain);
/**
* 婚姻矛盾
* @param domain domain
*/
void syncMarryDispute(TaskParamDomain domain);
/**
* 邻里矛盾
* @param domain domain
*/
void syncNeighborAndColleagueDispute(TaskParamDomain domain);
} }

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

@ -578,6 +578,270 @@ public class GBaseJJDServiceImpl implements GBaseJJDService {
taskRepository.updateTask(task2.getId(), toInsert2.size(), 0); taskRepository.updateTask(task2.getId(), toInsert2.size(), 0);
} }
@Override
public void syncLove(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> result = gBaseJJDRepository.getBaseMapper().selectLoveDispute(startTime);
// 恋爱创伤
RiskTask task = taskRepository.create(result.size(), 71);
Map<String, List<GBaseJJD>> idCodesMap = new WeakHashMap<>();
Map<String, List<GBaseJJD>> mobilesMap = new WeakHashMap<>();
for (GBaseJJD gBaseJJD : result) {
String idCard = PatternUtil.takeIdCard(gBaseJJD.getCjqk());
if (idCard.isEmpty()) {
idCard = PatternUtil.takeIdCard(gBaseJJD.getBjnr());
}
boolean mobileContinue = false;
if (!idCard.isEmpty()) {
List<String> tmp = Arrays.stream(idCard.split(",")).toList();
switch (tmp.size()) {
case 0 -> mobileContinue = true;
case 1 -> idCodesMap.computeIfAbsent(tmp.getFirst(), k -> new ArrayList<>()).add(gBaseJJD);
case 2 -> {
idCodesMap.computeIfAbsent(tmp.get(0), k -> new ArrayList<>()).add(gBaseJJD);
idCodesMap.computeIfAbsent(tmp.get(1), k -> new ArrayList<>()).add(gBaseJJD);
}
default -> {
for (int i = 1; i < 3; i++) {
idCodesMap.computeIfAbsent(tmp.get(i), k -> new ArrayList<>()).add(gBaseJJD);
}
}
}
if(!mobileContinue) {
continue;
}
}
String mobile = PatternUtil.takeMobile(gBaseJJD.getCjqk());
if (mobile.isEmpty()) {
mobile = PatternUtil.takeMobile(gBaseJJD.getBjnr());
}
if (mobile.isEmpty()) {
continue;
}
List<String> tmp = Arrays.stream(mobile.split(",")).toList();
switch (tmp.size()) {
case 0 -> {}
case 1 -> mobilesMap.computeIfAbsent(tmp.getFirst(), k -> new ArrayList<>()).add(gBaseJJD);
case 2 -> {
mobilesMap.computeIfAbsent(tmp.get(0), k -> new ArrayList<>()).add(gBaseJJD);
mobilesMap.computeIfAbsent(tmp.get(1), k -> new ArrayList<>()).add(gBaseJJD);
}
default -> {
for (int i = 1; i < tmp.size(); i++) {
mobilesMap.computeIfAbsent(tmp.get(i), k -> new ArrayList<>()).add(gBaseJJD);
}
}
}
}
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));
List<RiskModelTaskClue> toInsert = new ArrayList<>();
for (RiskPersonal person : domain.getPersons()) {
toInsert.addAll(collectionClue(idCodesMap, mobilesMap, person, personOldMap, task, "个人恋爱创伤"));
}
List<RiskModelTaskClue> toUpdate = new ArrayList<>();
List<String> deleteIdCards = new ArrayList<>();
for (RiskModelTaskClue clue : oldList) {
if(clue.getEventTime().isBefore(limit)) {
RiskModelTaskClue update = new RiskModelTaskClue();
update.setId(update.getId());
update.setDel(1);
toUpdate.add(update);
deleteIdCards.add(clue.getIdCode());
}
}
log.info("恋爱创伤:{} | {}", toInsert.size(), toUpdate.size());
if (!toInsert.isEmpty()) {
clueService.saveClues(toInsert, "较大影响负性事件");
}
if (!toUpdate.isEmpty()) {
clueService.deleteCluesAndDeleteTag(toUpdate, deleteIdCards, "个人恋爱创伤");
}
taskRepository.updateTask(task.getId(), toInsert.size(), toUpdate.size());
}
@Override
public void syncMarryDispute(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> result = gBaseJJDRepository.getBaseMapper().selectMarryDispute(startTime);
// 恋爱创伤
RiskTask task = taskRepository.create(result.size(), 72);
Map<String, List<GBaseJJD>> idCodesMap = new WeakHashMap<>();
Map<String, List<GBaseJJD>> mobilesMap = new WeakHashMap<>();
for (GBaseJJD gBaseJJD : result) {
String idCard = PatternUtil.takeIdCard(gBaseJJD.getCjqk());
if (idCard.isEmpty()) {
idCard = PatternUtil.takeIdCard(gBaseJJD.getBjnr());
}
boolean mobileContinue = false;
if (!idCard.isEmpty()) {
List<String> tmp = Arrays.stream(idCard.split(",")).toList();
switch (tmp.size()) {
case 0 -> mobileContinue = true;
case 1 -> idCodesMap.computeIfAbsent(tmp.getFirst(), k -> new ArrayList<>()).add(gBaseJJD);
case 2 -> {
idCodesMap.computeIfAbsent(tmp.get(0), k -> new ArrayList<>()).add(gBaseJJD);
idCodesMap.computeIfAbsent(tmp.get(1), k -> new ArrayList<>()).add(gBaseJJD);
}
default -> {
for (int i = 1; i < 3; i++) {
idCodesMap.computeIfAbsent(tmp.get(i), k -> new ArrayList<>()).add(gBaseJJD);
}
}
}
if(!mobileContinue) {
continue;
}
}
String mobile = PatternUtil.takeMobile(gBaseJJD.getCjqk());
if (mobile.isEmpty()) {
mobile = PatternUtil.takeMobile(gBaseJJD.getBjnr());
}
if (mobile.isEmpty()) {
continue;
}
List<String> tmp = Arrays.stream(mobile.split(",")).toList();
switch (tmp.size()) {
case 0 -> {}
case 1 -> mobilesMap.computeIfAbsent(tmp.getFirst(), k -> new ArrayList<>()).add(gBaseJJD);
case 2 -> {
mobilesMap.computeIfAbsent(tmp.get(0), k -> new ArrayList<>()).add(gBaseJJD);
mobilesMap.computeIfAbsent(tmp.get(1), k -> new ArrayList<>()).add(gBaseJJD);
}
default -> {
for (int i = 1; i < tmp.size(); i++) {
mobilesMap.computeIfAbsent(tmp.get(i), k -> new ArrayList<>()).add(gBaseJJD);
}
}
}
}
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));
List<RiskModelTaskClue> toInsert = new ArrayList<>();
for (RiskPersonal person : domain.getPersons()) {
toInsert.addAll(collectionClue(idCodesMap, mobilesMap, person, personOldMap, task, "与配偶关系不和"));
}
List<RiskModelTaskClue> toUpdate = new ArrayList<>();
List<String> deleteIdCards = new ArrayList<>();
for (RiskModelTaskClue clue : oldList) {
if(clue.getEventTime().isBefore(limit)) {
RiskModelTaskClue update = new RiskModelTaskClue();
update.setId(update.getId());
update.setDel(1);
toUpdate.add(update);
deleteIdCards.add(clue.getIdCode());
}
}
log.info("与配偶关系不和:{} | {}", toInsert.size(), toUpdate.size());
if (!toInsert.isEmpty()) {
clueService.saveClues(toInsert, Default.HOME_VIOLENCE);
}
if (!toUpdate.isEmpty()) {
clueService.deleteCluesAndDeleteTag(toUpdate, deleteIdCards, "与配偶关系不和");
}
taskRepository.updateTask(task.getId(), toInsert.size(), toUpdate.size());
}
@Override
public void syncNeighborAndColleagueDispute(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> result = gBaseJJDRepository.getBaseMapper().selectNeighborAndColleagueDispute(startTime);
// 恋爱创伤
RiskTask task = taskRepository.create(result.size(), 73);
Map<String, List<GBaseJJD>> idCodesMap = new WeakHashMap<>();
Map<String, List<GBaseJJD>> mobilesMap = new WeakHashMap<>();
for (GBaseJJD gBaseJJD : result) {
String idCard = PatternUtil.takeIdCard(gBaseJJD.getCjqk());
if (idCard.isEmpty()) {
idCard = PatternUtil.takeIdCard(gBaseJJD.getBjnr());
}
boolean mobileContinue = false;
if (!idCard.isEmpty()) {
List<String> tmp = Arrays.stream(idCard.split(",")).toList();
switch (tmp.size()) {
case 0 -> mobileContinue = true;
case 1 -> idCodesMap.computeIfAbsent(tmp.getFirst(), k -> new ArrayList<>()).add(gBaseJJD);
case 2 -> {
idCodesMap.computeIfAbsent(tmp.get(0), k -> new ArrayList<>()).add(gBaseJJD);
idCodesMap.computeIfAbsent(tmp.get(1), k -> new ArrayList<>()).add(gBaseJJD);
}
default -> {
for (int i = 1; i < tmp.size(); i++) {
idCodesMap.computeIfAbsent(tmp.get(i), k -> new ArrayList<>()).add(gBaseJJD);
}
}
}
if(!mobileContinue) {
continue;
}
}
String mobile = PatternUtil.takeMobile(gBaseJJD.getCjqk());
if (mobile.isEmpty()) {
mobile = PatternUtil.takeMobile(gBaseJJD.getBjnr());
}
if (mobile.isEmpty()) {
continue;
}
List<String> tmp = Arrays.stream(mobile.split(",")).toList();
switch (tmp.size()) {
case 0 -> {}
case 1 -> mobilesMap.computeIfAbsent(tmp.getFirst(), k -> new ArrayList<>()).add(gBaseJJD);
case 2 -> {
mobilesMap.computeIfAbsent(tmp.get(0), k -> new ArrayList<>()).add(gBaseJJD);
mobilesMap.computeIfAbsent(tmp.get(1), k -> new ArrayList<>()).add(gBaseJJD);
}
default -> {
for (int i = 1; i < tmp.size(); i++) {
mobilesMap.computeIfAbsent(tmp.get(i), k -> new ArrayList<>()).add(gBaseJJD);
}
}
}
}
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));
List<RiskModelTaskClue> toInsert = new ArrayList<>();
for (RiskPersonal person : domain.getPersons()) {
toInsert.addAll(collectionClue(idCodesMap, mobilesMap, person, personOldMap, task, "与邻居或同事纠纷"));
}
List<RiskModelTaskClue> toUpdate = new ArrayList<>();
List<String> deleteIdCards = new ArrayList<>();
for (RiskModelTaskClue clue : oldList) {
if(clue.getEventTime().isBefore(limit)) {
RiskModelTaskClue update = new RiskModelTaskClue();
update.setId(update.getId());
update.setDel(1);
toUpdate.add(update);
deleteIdCards.add(clue.getIdCode());
}
}
log.info("邻里和同事:{} | {}", toInsert.size(), toUpdate.size());
if (!toInsert.isEmpty()) {
clueService.saveClues(toInsert, Default.HOME_VIOLENCE);
}
if (!toUpdate.isEmpty()) {
clueService.deleteCluesAndDeleteTag(toUpdate, deleteIdCards, "与邻居或同事纠纷");
}
taskRepository.updateTask(task.getId(), toInsert.size(), toUpdate.size());
}
Map<String, List<GBaseJJD>> findTargetJJD(List<GBaseJJD> jjdList) { Map<String, List<GBaseJJD>> findTargetJJD(List<GBaseJJD> jjdList) {
Map<String, List<GBaseJJD>> fatherIdCodeMap = new WeakHashMap<>(); Map<String, List<GBaseJJD>> fatherIdCodeMap = new WeakHashMap<>();
@ -645,6 +909,7 @@ public class GBaseJJDServiceImpl implements GBaseJJDService {
List<RiskModelTaskClue> toInsert = new ArrayList<>(); List<RiskModelTaskClue> toInsert = new ArrayList<>();
for (RiskPersonal person : domain.getPersons()) { for (RiskPersonal person : domain.getPersons()) {
List<GBaseJJD> jjdList = fatherIdCodeMap.get(person.getIdCode()); List<GBaseJJD> jjdList = fatherIdCodeMap.get(person.getIdCode());
jjdList = jjdList.stream().filter(StreamUtil.distinctByKey(GBaseJJD::getJjdbh)).toList();
if(jjdList == null) { if(jjdList == null) {
continue; continue;
} }

Loading…
Cancel
Save