Browse Source

买油

master
kami 1 year ago
parent
commit
5a31836138
  1. 19
      src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseZDRYMapper.java
  2. 2
      src/main/java/com/biutag/supervisiondata/mapper/mine/RiskPersonalTagMapper.java
  3. 3
      src/main/java/com/biutag/supervisiondata/pojo/constants/Default.java
  4. 26
      src/main/java/com/biutag/supervisiondata/pojo/database/SecurityMan.java
  5. 3
      src/main/java/com/biutag/supervisiondata/pojo/entity/dwd/GBaseOilBuy.java
  6. 2
      src/main/java/com/biutag/supervisiondata/service/PointService.java
  7. 2
      src/main/java/com/biutag/supervisiondata/service/RiskModelTaskClueService.java
  8. 2
      src/main/java/com/biutag/supervisiondata/service/impl/GBaseBAServiceImpl.java
  9. 12
      src/main/java/com/biutag/supervisiondata/service/impl/MarriageServiceImpl.java
  10. 125
      src/main/java/com/biutag/supervisiondata/service/impl/PointServiceImpl.java

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

@ -1,8 +1,10 @@
package com.biutag.supervisiondata.mapper.dwd; package com.biutag.supervisiondata.mapper.dwd;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
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.GBaseZDRY; import com.biutag.supervisiondata.pojo.entity.dwd.GBaseZDRY;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Select;
import java.util.List; import java.util.List;
@ -66,4 +68,21 @@ public interface GBaseZDRYMapper extends BaseMapper<GBaseZDRY> {
" SELECT xzdzrr, xzdzrrlxfs, COUNT(DISTINCT sfzh) AS num FROM dwd_ry_zddxgk_zdry b WHERE a.xzdzrr = b.xzdzrr AND a.xzdzrrlxfs = b.xzdzrrlxfs GROUP BY xzdzrr, xzdzrrlxfs HAVING COUNT(DISTINCT sfzh) >= 100) ORDER BY xzdzrr, xzdzrrlxfs") " SELECT xzdzrr, xzdzrrlxfs, COUNT(DISTINCT sfzh) AS num FROM dwd_ry_zddxgk_zdry b WHERE a.xzdzrr = b.xzdzrr AND a.xzdzrrlxfs = b.xzdzrrlxfs GROUP BY xzdzrr, xzdzrrlxfs HAVING COUNT(DISTINCT sfzh) >= 100) ORDER BY xzdzrr, xzdzrrlxfs")
List<GBaseZDRY> noPower(); List<GBaseZDRY> noPower();
@Select(" select xm as name,zjhm as idCode,lxdh as mobile,gwmc as job, rzsj as time, 1 as dataSource " +
" from dwd_ry_nbgl_nbbay where lzsj is null and ryztdm = '1' and zjhm is not null")
List<SecurityMan> syncSecurityMan1();
@Select(" select xm as name,sfzhm as idCode,lxdh as mobile,zw as job, rzsj as time, 2 as dataSource " +
" from dwd_ry_nbgl_bacyryxxdjb where ryztdm = '0' and lzsj is null and sfzhm is not null")
List<SecurityMan> syncSecurityMan2();
@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 ( " +
" <foreach collection='list' separator=',' item='item'> " +
" #{item}" +
" </foreach>" +
" ) "+
"</script>")
List<String> syncCarUser(@Param("list")List<String> list);
} }

2
src/main/java/com/biutag/supervisiondata/mapper/mine/RiskPersonalTagMapper.java

@ -18,7 +18,7 @@ public interface RiskPersonalTagMapper extends BaseMapper<RiskPersonalTag> {
* @return * @return
*/ */
@Update("<script>" + @Update("<script>" +
" update risk_personal_tag set del = 1 where small_tag = #{smallTag} and id_code in ( " + " update risk_personal_tag set del = 1 where small_tag in (#{smallTag}) and id_code in ( " +
" <foreach collection='list' separator=',' item='item'> " + " <foreach collection='list' separator=',' item='item'> " +
" #{item}" + " #{item}" +
" </foreach>" + " </foreach>" +

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

@ -44,6 +44,9 @@ public class Default {
public static final String OIL_BUY = "近3月购买散装油记录"; public static final String OIL_BUY = "近3月购买散装油记录";
public static final String NO_CAR_OIL_BUY = "无车近3月购买散装油记录";
// ***********因素************* // ***********因素*************
public static final String AGE_IG = "年龄因素"; public static final String AGE_IG = "年龄因素";

26
src/main/java/com/biutag/supervisiondata/pojo/database/SecurityMan.java

@ -0,0 +1,26 @@
package com.biutag.supervisiondata.pojo.database;
import lombok.Data;
import java.io.Serializable;
/**
* @author kami on 2024-11-27 16:44:18
* @version 0.0.1
* @since 1.8
*/
@Data
public class SecurityMan implements Serializable {
String name;
String idCode;
String job;
String mobile;
String time;
Integer dataSource;
}

3
src/main/java/com/biutag/supervisiondata/pojo/entity/dwd/GBaseOilBuy.java

@ -14,8 +14,9 @@ import java.io.Serializable;
@Data @Data
@TableName("`dwd_qb_nbgl_syssyj`") @TableName("`dwd_qb_nbgl_syssyj`")
public class GBaseOilBuy implements Serializable { public class GBaseOilBuy implements Serializable {
@TableField("xh") @TableField("xh")
String id; String xh;
@TableField("pcsdm") @TableField("pcsdm")
String orgId; String orgId;
@TableField("pcsmc") @TableField("pcsmc")

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

@ -34,4 +34,6 @@ public interface PointService {
* @param domain domain * @param domain domain
*/ */
void syncOilBuy(TaskParamDomain domain); void syncOilBuy(TaskParamDomain domain);
void syncSecurity(TaskParamDomain domain);
} }

2
src/main/java/com/biutag/supervisiondata/service/RiskModelTaskClueService.java

@ -18,7 +18,7 @@ public interface RiskModelTaskClueService {
* 删除线索并删除标签只是删除或修改直接调用repository * 删除线索并删除标签只是删除或修改直接调用repository
* @param list 线索 * @param list 线索
* @param idCodes 要删除标签的身份证号 * @param idCodes 要删除标签的身份证号
* @param smallTag 要删除的标签 * @param smallTag 要删除的标签
*/ */
void deleteCluesAndDeleteTag(List<RiskModelTaskClue> list, List<String> idCodes, String smallTag); void deleteCluesAndDeleteTag(List<RiskModelTaskClue> list, List<String> idCodes, String smallTag);
} }

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

@ -17,6 +17,7 @@ import com.biutag.supervisiondata.repository.RiskModelTaskClueRepository;
import com.biutag.supervisiondata.repository.RiskTaskRepository; import com.biutag.supervisiondata.repository.RiskTaskRepository;
import com.biutag.supervisiondata.service.GBaseBAService; import com.biutag.supervisiondata.service.GBaseBAService;
import com.biutag.supervisiondata.service.RiskModelTaskClueService; import com.biutag.supervisiondata.service.RiskModelTaskClueService;
import jdk.jfr.Description;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -52,6 +53,7 @@ public class GBaseBAServiceImpl implements GBaseBAService {
private final RiskModelTaskClueRepository clueRepository; private final RiskModelTaskClueRepository clueRepository;
@Description("暂时用pointService里面的保安,那边数据多,但是有情况不对")
@Override @Override
public void baModelTask(TaskParamDomain domain) { public void baModelTask(TaskParamDomain domain) {
RiskTask task = createTask(domain.getPersons().size(), 37); RiskTask task = createTask(domain.getPersons().size(), 37);

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

@ -109,13 +109,8 @@ public class MarriageServiceImpl implements MarriageService {
Map<String, List<GBaseHY>> manMap = new HashMap<>(); Map<String, List<GBaseHY>> manMap = new HashMap<>();
Map<String, List<GBaseHY>> femanMap = new HashMap<>(); Map<String, List<GBaseHY>> femanMap = new HashMap<>();
for (GBaseHY gBaseHY : hyList) { for (GBaseHY gBaseHY : hyList) {
List<GBaseHY> tmp = Optional.ofNullable(manMap.get(gBaseHY.getNfsfhm())).orElse(new ArrayList<>()); manMap.computeIfAbsent(gBaseHY.getNfsfhm(), k -> new ArrayList<>()).add(gBaseHY);
tmp.add(gBaseHY); femanMap.computeIfAbsent(gBaseHY.getNvfsfhm(), k -> new ArrayList<>()).add(gBaseHY);
manMap.put(gBaseHY.getNfsfhm(), tmp);
List<GBaseHY> tmp2 = Optional.ofNullable(femanMap.get(gBaseHY.getNvfsfhm())).orElse(new ArrayList<>());
tmp2.add(gBaseHY);
femanMap.put(gBaseHY.getNvfsfhm(), tmp2);
} }
log.info("男性数据:{}", manMap.size()); log.info("男性数据:{}", manMap.size());
@ -133,7 +128,8 @@ public class MarriageServiceImpl implements MarriageService {
List<ClueData> toInsertData2 = new ArrayList<>(); List<ClueData> toInsertData2 = new ArrayList<>();
List<RiskModelTaskClue> toUpdateData2 = new ArrayList<>(); List<RiskModelTaskClue> toUpdateData2 = new ArrayList<>();
LocalDateTime targetTime = LocalDateTime.now().minusMonths(12); LocalDateTime targetTime = LocalDateTime.now().minusDays(365);
log.info("指定时间:{}", targetTime);
for (RiskPersonal person : domain.getPersons()) { for (RiskPersonal person : domain.getPersons()) {
List<GBaseHY> tmpList = manMap.get(person.getIdCode()); List<GBaseHY> tmpList = manMap.get(person.getIdCode());
if(tmpList == null) { if(tmpList == null) {

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

@ -2,13 +2,14 @@ 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.config.cache.RedisDao; import com.biutag.supervisiondata.config.cache.RedisDao;
import com.biutag.supervisiondata.mapper.mine.SupDepartMapper; import com.biutag.supervisiondata.mapper.mine.SupDepartMapper;
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.GBaseJJD;
import com.biutag.supervisiondata.pojo.entity.dwd.GBaseOilBuy; import com.biutag.supervisiondata.pojo.entity.dwd.GBaseOilBuy;
import com.biutag.supervisiondata.pojo.entity.dwd.GBaseTbDZdrylb; import com.biutag.supervisiondata.pojo.entity.dwd.GBaseTbDZdrylb;
import com.biutag.supervisiondata.pojo.entity.dwd.GBaseZDRY; import com.biutag.supervisiondata.pojo.entity.dwd.GBaseZDRY;
@ -30,6 +31,7 @@ import java.time.ZoneId;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
import java.util.List; import java.util.List;
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;
@ -420,7 +422,7 @@ public class PointServiceImpl implements PointService {
public void syncOilBuy(TaskParamDomain domain) { public void syncOilBuy(TaskParamDomain domain) {
LocalDateTime currentTime = LocalDateTime.now().minusMonths(3); LocalDateTime currentTime = LocalDateTime.now().minusMonths(3);
List<GBaseOilBuy> buys = oilBuyRepository.list(new LambdaQueryWrapper<GBaseOilBuy>() List<GBaseOilBuy> buys = oilBuyRepository.list(new LambdaQueryWrapper<GBaseOilBuy>()
.select(GBaseOilBuy::getId,GBaseOilBuy::getNumber,GBaseOilBuy::getOrgId,GBaseOilBuy::getOrgName, .select(GBaseOilBuy::getXh,GBaseOilBuy::getNumber,GBaseOilBuy::getOrgId,GBaseOilBuy::getOrgName,
GBaseOilBuy::getName,GBaseOilBuy::getCompanyName,GBaseOilBuy::getType,GBaseOilBuy::getTime, GBaseOilBuy::getName,GBaseOilBuy::getCompanyName,GBaseOilBuy::getType,GBaseOilBuy::getTime,
GBaseOilBuy::getUseTo,GBaseOilBuy::getMobile,GBaseOilBuy::getIdCode) GBaseOilBuy::getUseTo,GBaseOilBuy::getMobile,GBaseOilBuy::getIdCode)
.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"))));
@ -432,6 +434,19 @@ public class PointServiceImpl implements PointService {
Map<String, RiskModelTaskClue> oldMap = oldList.stream().collect(Collectors.toMap(RiskModelTaskClue::getCaseIds, Function.identity(), (val, old)-> val)); Map<String, RiskModelTaskClue> oldMap = oldList.stream().collect(Collectors.toMap(RiskModelTaskClue::getCaseIds, 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> carMaster = new ArrayList<>();
// 车主
if(!idCards.isEmpty()) {
carMaster.addAll(zdryRepository.getBaseMapper().syncCarUser(idCards));
}
Map<String,Byte[]> carMt = new WeakHashMap<>();
for (String s : carMaster) {
carMt.put(s, new Byte[0]);
}
// 新增记录 // 新增记录
List<RiskModelTaskClue> toInsert = new ArrayList<>(); List<RiskModelTaskClue> toInsert = new ArrayList<>();
for (RiskPersonal person : domain.getPersons()) { for (RiskPersonal person : domain.getPersons()) {
@ -440,18 +455,16 @@ public class PointServiceImpl implements PointService {
continue; continue;
} }
for (GBaseOilBuy item : mineBuy) { for (GBaseOilBuy item : mineBuy) {
if(oldMap.get(BhUtil.oilBh(item.getId())) != null) { if(oldMap.get(BhUtil.oilBh(item.getXh())) != null) {
continue; continue;
} }
ClueData data = ClueData.builder() ClueData data = ClueData.builder()
.name(person.getName()) .name(person.getName())
.id(BhUtil.oilBh(item.getId())) .id(BhUtil.oilBh(item.getXh()))
.tag(Default.OIL_BUY)
.idCode(person.getIdCode()) .idCode(person.getIdCode())
.departId(item.getOrgId()) .departId(item.getOrgId())
.departName(item.getOrgName()) .departName(item.getOrgName())
.personId(person.getId()) .personId(person.getId())
.sourceData("发现该人员于"+item.getTime()+"在"+item.getCompanyName()+"购买容量为"+item.getNumber()+"L的"+item.getType()+",用作"+item.getUseTo()+",风险分增加2分")
.build(); .build();
try { try {
data.setEventTime(LocalDateTime.parse(item.getTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); data.setEventTime(LocalDateTime.parse(item.getTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
@ -459,20 +472,39 @@ public class PointServiceImpl implements PointService {
data.setEventTime(LocalDateTime.now()); data.setEventTime(LocalDateTime.now());
log.error("散装油时间转化异常"); log.error("散装油时间转化异常");
} }
if(carMt.get(person.getIdCode()) == null) {
data.setTag(Default.NO_CAR_OIL_BUY);
data.setSourceData("发现该人员属于无车人员,于"+item.getTime()+"在"+item.getCompanyName()+"购买容量为"+item.getNumber()+"L的"+item.getType()+",用作"+item.getUseTo()+",风险分增加3分");
toInsert.add(createClue(task.getModelId(), 3, task.getId(), data));
} else {
data.setTag(Default.OIL_BUY);
data.setSourceData("发现该人员于"+item.getTime()+"在"+item.getCompanyName()+"购买容量为"+item.getNumber()+"L的"+item.getType()+",用作"+item.getUseTo()+",风险分增加2分");
toInsert.add(createClue(task.getModelId(), 2, task.getId(), data)); toInsert.add(createClue(task.getModelId(), 2, task.getId(), data));
} }
} }
}
if (!toInsert.isEmpty()) {
log.info("增加散装油人员:{}", toInsert.size());
modelTaskClueService.saveClues(toInsert, Default.GOODS_IG);
}
Map<String, List<RiskModelTaskClue>> tmp = oldList.stream().collect(Collectors.groupingBy(RiskModelTaskClue::getRiskReason));
int count = 0;
for (Map.Entry<String, List<RiskModelTaskClue>> entry : tmp.entrySet()) {
List<RiskModelTaskClue> toDelete = new ArrayList<>(); List<RiskModelTaskClue> toDelete = new ArrayList<>();
Map<String, Byte[]> deletePerson = new WeakHashMap<>(); Map<String, Byte[]> deletePerson = new WeakHashMap<>();
Map<String, Byte[]> livePerson = new WeakHashMap<>(); Map<String, Byte[]> livePerson = new WeakHashMap<>();
// 删除记录 // 删除记录
for (RiskModelTaskClue clue : oldList) { for (RiskModelTaskClue clue : entry.getValue()) {
if(clue.getEventTime().isBefore(currentTime)){ if(clue.getEventTime().isBefore(currentTime)){
RiskModelTaskClue delete = new RiskModelTaskClue(); RiskModelTaskClue delete = new RiskModelTaskClue();
delete.setId(clue.getId()); delete.setId(clue.getId());
delete.setDel(1); delete.setDel(1);
toDelete.add(delete); toDelete.add(delete);
deletePerson.put(clue.getIdCode(), new Byte[0]); deletePerson.put(clue.getIdCode(), new Byte[0]);
count++;
} else { } else {
livePerson.put(clue.getIdCode(), new Byte[0]); livePerson.put(clue.getIdCode(), new Byte[0]);
} }
@ -484,18 +516,85 @@ public class PointServiceImpl implements PointService {
idCodes.add(s); idCodes.add(s);
} }
} }
if (!toInsert.isEmpty()) {
log.info("增加散装油人员:{}", toInsert.size());
modelTaskClueService.saveClues(toInsert, Default.GOODS_IG);
}
if(!toDelete.isEmpty()) { if(!toDelete.isEmpty()) {
modelTaskClueService.deleteCluesAndDeleteTag(toDelete, idCodes, Default.OIL_BUY); modelTaskClueService.deleteCluesAndDeleteTag(toDelete, idCodes, entry.getKey());
}
}
RiskTask updateTask = new RiskTask();
updateTask.setId(task.getId());
updateTask.setInsertSize(toInsert.size());
updateTask.setUpdateSize(count);
updateTask.setState(1);
updateTask.setEndTime(LocalDateTime.now());
taskRepository.updateById(updateTask);
}
@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 = createTask(map.size(), 37);
taskRepository.save(task);
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()+",属于特种职业,增加风险分2分。")
.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(), 2, task.getId(), data));
}
// 新增
if (!toInsert.isEmpty()) {
log.info("新增保安人员:{}", toInsert.size());
modelTaskClueService.saveClues(toInsert, Default.IMPORT_IG);
} }
RiskTask updateTask = new RiskTask(); RiskTask updateTask = new RiskTask();
updateTask.setId(task.getId()); updateTask.setId(task.getId());
updateTask.setInsertSize(toInsert.size()); updateTask.setInsertSize(toInsert.size());
updateTask.setUpdateSize(toDelete.size()); updateTask.setUpdateSize(0);
updateTask.setState(1); updateTask.setState(1);
updateTask.setEndTime(LocalDateTime.now()); updateTask.setEndTime(LocalDateTime.now());
taskRepository.updateById(updateTask); taskRepository.updateById(updateTask);

Loading…
Cancel
Save