From 963c8db0b57b748cf102ed73edf7ca037e2d3ebf Mon Sep 17 00:00:00 2001 From: "583641232@qq.com" <583641232@qq.com> Date: Fri, 9 Aug 2024 10:44:39 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20=20=E8=BD=A6=E8=BE=86=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E6=9B=B4=E6=96=B0=EF=BC=8C=E6=9B=B4=E6=96=B0=E8=BD=A6?= =?UTF-8?q?=E7=89=8C=E5=AE=9E=E9=99=85=E6=8C=81=E6=9C=89=E4=BA=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../datacenter/CarInfoController.java | 8 +- .../datacenter/domain/CarInfo.java | 2 + .../service/PlateNumberService.java | 2 + .../service/impl/CarInfoServiceImpl.java | 33 ++++-- .../service/impl/PlateNumberServiceImpl.java | 104 ++++++++++++------ 5 files changed, 107 insertions(+), 42 deletions(-) diff --git a/cas-admin/src/main/java/com/inscloudtech/web/controller/datacenter/CarInfoController.java b/cas-admin/src/main/java/com/inscloudtech/web/controller/datacenter/CarInfoController.java index e52423e..8eb3734 100644 --- a/cas-admin/src/main/java/com/inscloudtech/web/controller/datacenter/CarInfoController.java +++ b/cas-admin/src/main/java/com/inscloudtech/web/controller/datacenter/CarInfoController.java @@ -1,6 +1,7 @@ package com.inscloudtech.web.controller.datacenter; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.date.DateTime; import com.inscloudtech.analysiscenter.domain.AnalysisDto; import com.inscloudtech.bankStatementAnalysis.service.ImportService; import com.inscloudtech.common.annotation.Log; @@ -78,6 +79,8 @@ public class CarInfoController extends BaseController { @Log(title = "重点人员资产-车辆信息", businessType = BusinessType.INSERT) @PostMapping() public R add(@RequestBody CarInfo bo) { + bo.setCreateBy(getUsername()); + bo.setCreateTime(new DateTime()); iCarInfoService.insertByBo(bo); return R.ok(); } @@ -89,7 +92,10 @@ public class CarInfoController extends BaseController { @UpdateLog(title = "重点人员资产-车辆信息",mapperClass = CarInfoMapper.class, businessType = BusinessType.UPDATE) @PutMapping() public R edit(@RequestBody CarInfo bo) { - return R.ok(iCarInfoService.updateByBo(bo)); + bo.setUpdateBy(getUsername()); + bo.setUpdateTime(new DateTime()); + return R.ok( + iCarInfoService.updateByBo(bo)); } /** diff --git a/cas-system/src/main/java/com/inscloudtech/datacenter/domain/CarInfo.java b/cas-system/src/main/java/com/inscloudtech/datacenter/domain/CarInfo.java index 2ade37b..38b3980 100644 --- a/cas-system/src/main/java/com/inscloudtech/datacenter/domain/CarInfo.java +++ b/cas-system/src/main/java/com/inscloudtech/datacenter/domain/CarInfo.java @@ -100,9 +100,11 @@ public class CarInfo extends BaseEntity { @TableField(updateStrategy = FieldStrategy.IGNORED) private String bgc; + @DeduplicationField private String caseId; @IndexField(fieldType = FieldType.KEYWORD) + @DeduplicationField private String analysisResultId; @ExcelIgnore diff --git a/cas-system/src/main/java/com/inscloudtech/datacenter/service/PlateNumberService.java b/cas-system/src/main/java/com/inscloudtech/datacenter/service/PlateNumberService.java index 7990fcb..1d6965c 100644 --- a/cas-system/src/main/java/com/inscloudtech/datacenter/service/PlateNumberService.java +++ b/cas-system/src/main/java/com/inscloudtech/datacenter/service/PlateNumberService.java @@ -66,4 +66,6 @@ public interface PlateNumberService { void save2AnalysisResult(AnalysisDto dto); void invoke(String caseId); + + void updateHolder(String caseId); } diff --git a/cas-system/src/main/java/com/inscloudtech/datacenter/service/impl/CarInfoServiceImpl.java b/cas-system/src/main/java/com/inscloudtech/datacenter/service/impl/CarInfoServiceImpl.java index 192463d..236c6cf 100644 --- a/cas-system/src/main/java/com/inscloudtech/datacenter/service/impl/CarInfoServiceImpl.java +++ b/cas-system/src/main/java/com/inscloudtech/datacenter/service/impl/CarInfoServiceImpl.java @@ -19,6 +19,7 @@ import com.inscloudtech.datacenter.mapper.CarInfoMapper; import com.inscloudtech.datacenter.mapper.es.CarInfoEsMapper; import com.inscloudtech.datacenter.service.ICarInfoService; import com.inscloudtech.bankStatementAnalysis.helper.HelperUtil; +import com.inscloudtech.datacenter.service.PlateNumberService; import lombok.RequiredArgsConstructor; import org.dromara.easyes.core.biz.SAPageInfo; import org.dromara.easyes.core.conditions.select.LambdaEsQueryWrapper; @@ -48,6 +49,9 @@ public class CarInfoServiceImpl implements ICarInfoService { private final CarInfoEsMapper esMapper; + private final PlateNumberService plateNumberService; + + @Override public void analysisResultMerge(Map sourceArIdTargetArIdMap) { List analysisReportList = baseMapper.selectList(new LambdaQueryWrapper() @@ -60,7 +64,8 @@ public class CarInfoServiceImpl implements ICarInfoService { String targetArId = sourceArIdTargetArIdMap.get(sourceArId); for (CarInfo result : reports) { result.setAnalysisResultId(targetArId); - String md5Id = HelperUtil.generateMD5(result.toString()); + String uniqueKey = BeanUtils.getUniqueKey(result); + String md5Id = HelperUtil.generateMD5(uniqueKey); result.setId(md5Id); addList.add(result); } @@ -87,7 +92,8 @@ public class CarInfoServiceImpl implements ICarInfoService { for (CarInfo item : carInfos) { item.setCaseId(null); item.setAnalysisResultId(analysisResultId); - String md5Id = HelperUtil.generateMD5(item.toString()); + String uniqueKey = BeanUtils.getUniqueKey(item); + String md5Id = HelperUtil.generateMD5(uniqueKey); //未导入数据内部去重 if(HelperUtil.deduplication(md5Id,uniqueKeySet)){ continue; @@ -180,8 +186,13 @@ public class CarInfoServiceImpl implements ICarInfoService { public Boolean insertByBo(CarInfo bo) { boolean flag = baseMapper.insert(bo) > 0; if (flag) { + BeanUtils.beanAttributeValueTrim(bo); + String uniqueKey = BeanUtils.getUniqueKey(bo); + String md5Id = HelperUtil.generateMD5(uniqueKey); + bo.setId(md5Id); esMapper.insert(bo); } + plateNumberService.updateHolder(bo.getCaseId()); return flag; } @@ -191,12 +202,14 @@ public class CarInfoServiceImpl implements ICarInfoService { @Override @Transactional public Boolean updateByBo(CarInfo bo) { - CarInfo update = BeanUtil.toBean(bo, CarInfo.class); - boolean b = baseMapper.updateById(update) > 0; - if(b){ - esMapper.updateById(update); - } - return b; + baseMapper.deleteById(bo.getId()); + BeanUtils.beanAttributeValueTrim(bo); + String uniqueKey = BeanUtils.getUniqueKey(bo); + String md5Id = HelperUtil.generateMD5(uniqueKey); + bo.setId(md5Id); + esMapper.insert(bo); + plateNumberService.updateHolder(bo.getCaseId()); + return true; } /** * 批量删除重点人员资产-车辆信息 @@ -269,6 +282,7 @@ public class CarInfoServiceImpl implements ICarInfoService { if (CollectionUtil.isNotEmpty(updateList)) { this.updateBatch(updateList); } + plateNumberService.updateHolder(caseId); return true; } @@ -364,7 +378,8 @@ public class CarInfoServiceImpl implements ICarInfoService { e.printStackTrace(); } family.setCaseId(caseId); - String md5Id = HelperUtil.generateMD5(family.toString()); + String uniqueKey = BeanUtils.getUniqueKey(family); + String md5Id = HelperUtil.generateMD5(caseId+uniqueKey); //未导入数据内部去重 if(HelperUtil.deduplication(md5Id,uniqueKeySet)){ continue; diff --git a/cas-system/src/main/java/com/inscloudtech/datacenter/service/impl/PlateNumberServiceImpl.java b/cas-system/src/main/java/com/inscloudtech/datacenter/service/impl/PlateNumberServiceImpl.java index 0692404..6a55895 100644 --- a/cas-system/src/main/java/com/inscloudtech/datacenter/service/impl/PlateNumberServiceImpl.java +++ b/cas-system/src/main/java/com/inscloudtech/datacenter/service/impl/PlateNumberServiceImpl.java @@ -3,6 +3,7 @@ package com.inscloudtech.datacenter.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.date.DateTime; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.inscloudtech.analysiscenter.domain.AnalysisDto; @@ -117,31 +118,31 @@ public class PlateNumberServiceImpl implements PlateNumberService { } } } - if(CollectionUtil.isEmpty(tempMap)){ - List tempAddList = BeanCopyUtils.copyList(plateNumberInfoList, PlateNumberInfo.class); - for (PlateNumberInfo plateNumberInfo : tempAddList) { + + for (PlateNumberInfo plateNumberInfo : plateNumberInfoList) { + String bsHolder = plateNumberInfo.getBsHolder(); + if (StrUtil.isEmpty(bsHolder)) { + plateNumberInfo.setHolder(holder); plateNumberInfo.setHasDeal(1); plateNumberInfo.setCreateTime(new Date()); String uniqueKey = BeanUtils.getUniqueKey(plateNumberInfo); String md5Id = HelperUtil.generateMD5(caseId+uniqueKey); plateNumberInfo.setId(md5Id); plateNumberInfo.setCaseId(caseId); - } - addList.addAll(tempAddList); - }else { - for (String bsHolder : tempMap.keySet()) { + addList.add(plateNumberInfo); + }else { PlateNumberInfo add = new PlateNumberInfo(); add.setPlateNumber(plateNumber); add.setBsHolder(bsHolder); List infos = tempMap.get(bsHolder); List uniqueSourceContent = infos.stream().filter(item->StrUtil.isNotEmpty(item.getSourceContent())) - .map(PlateNumberInfo::getSourceContent) - .distinct() - .collect(Collectors.toList()); + .map(PlateNumberInfo::getSourceContent) + .distinct() + .collect(Collectors.toList()); List bankName = infos.stream().filter(item->StrUtil.isNotEmpty(item.getBankName())) - .map(PlateNumberInfo::getBankName) - .distinct() - .collect(Collectors.toList()); + .map(PlateNumberInfo::getBankName) + .distinct() + .collect(Collectors.toList()); // List uniqueSourceFile = infos.stream().filter(item->StrUtil.isNotEmpty(item.getSourceFile())) // .map(PlateNumberInfo::getSourceFile) // .distinct() @@ -149,9 +150,9 @@ public class PlateNumberServiceImpl implements PlateNumberService { // add.setSourceFile(uniqueSourceFile.stream() // .collect(Collectors.joining(", "))); add.setSourceContent(uniqueSourceContent.stream() - .collect(Collectors.joining(", "))); + .collect(Collectors.joining(", "))); add.setBankName(bankName.stream() - .collect(Collectors.joining(", "))); + .collect(Collectors.joining(", "))); add.setHasDeal(1); add.setHolder(holder); add.setCreateTime(new Date()); @@ -162,7 +163,6 @@ public class PlateNumberServiceImpl implements PlateNumberService { addList.add(add); } } - } if(CollectionUtil.isNotEmpty(addList)){ @@ -170,26 +170,66 @@ public class PlateNumberServiceImpl implements PlateNumberService { esMapper.insertBatch(addList); } + } -// String uniqueKey = BeanUtils.getUniqueKey(plateNumberInfo); -// String md5Id = HelperUtil.generateMD5(caseId+uniqueKey); -// numberInfoList.stream().forEach(item->{ -// if (carInfoMap.containsKey(item.getPlateNumber())) { -// List tempCarList = carInfoMap.get(item.getPlateNumber()); -// for (CarInfo carInfo : tempCarList) { -// if(StrUtil.isEmpty(carInfo.getName())){ -// item.setHolder(carInfo.getName()); -// break; -// } -// } -// } -//// item.get -// -// }); + /** + * 车辆信息有更新就更新实际持有人 + */ + @Override + public void updateHolder(String caseId){ + LambdaEsQueryWrapper lqw = EsWrappers.lambdaQuery(CarInfo.class); + lqw.eq(CarInfo::getCaseId,caseId); + List carInfos = carInfoEsMapper.selectList(lqw); + Map> carInfoMap = carInfos.stream().filter(item -> StrUtil.isNotEmpty(item.getCarNo())) + .collect(Collectors.groupingBy(CarInfo::getCarNo)); + PlateNumberInfo bo = new PlateNumberInfo(); + bo.setCaseId(caseId); - } + List numberInfoList = queryList(bo); + if(CollectionUtil.isEmpty(numberInfoList)){ + return; + } + Map> plateNumberInfoMap = numberInfoList.stream().filter(item -> StrUtil.isNotEmpty(item.getPlateNumber())) + .collect(Collectors.groupingBy(PlateNumberInfo::getPlateNumber)); + + List updateList = new ArrayList<>(); + for (String plateNumber : plateNumberInfoMap.keySet()) { + List plateNumberInfoList = plateNumberInfoMap.get(plateNumber); + String holder = ""; + if(carInfoMap.containsKey(plateNumber)){ + List tempCarInfos = carInfoMap.get(plateNumber); + for (CarInfo tempCarInfo : tempCarInfos) { + if(StrUtil.isNotEmpty(tempCarInfo.getName())){ + holder = tempCarInfo.getName(); + break; + } + } + } + + for (PlateNumberInfo plateNumberInfo : plateNumberInfoList) { + plateNumberInfo.setHolder(holder); + updateList.add(plateNumberInfo); + } + } + + //删除再新增,不然id重复 + if(CollectionUtil.isNotEmpty(updateList)){ + List idList = updateList.stream().map(PlateNumberInfo::getId).collect(Collectors.toList()); + esMapper.deleteBatchIds(idList); + + List addList = new ArrayList<>(); + for (PlateNumberInfo plateNumberInfo : updateList) { + String uniqueKey = BeanUtils.getUniqueKey(plateNumberInfo); + String md5Id = HelperUtil.generateMD5(caseId+uniqueKey); + plateNumberInfo.setId(md5Id); + plateNumberInfo.setUpdateTime(new DateTime()); + addList.add(plateNumberInfo); + } + esMapper.insertBatch(addList); + } + } /** * 查询重点人员资产-车辆抓取