|
|
@@ -56,12 +56,12 @@ public class KwfDriverScoreService {
|
|
|
KwfDriverScore driverScoreDto = new KwfDriverScore();
|
|
|
driverScoreDto.setProviderEntId(updateDriverScoreDto.getProviderEntId());
|
|
|
driverScoreDto.setLogisticsEntId(updateDriverScoreDto.getLogisticsEntId());
|
|
|
- List<KwfDriverScore> kwfDriverScores = kwfDriverScoreMapper.selectKwfDriverScoreList(driverScoreDto).stream().filter(v-> driversMap.containsKey(v.getDriverId())).toList();
|
|
|
+ List<KwfDriverScore> kwfDriverScores = new ArrayList<>(kwfDriverScoreMapper.selectKwfDriverScoreList(driverScoreDto).stream().filter(v -> driversMap.containsKey(v.getDriverId())).toList());
|
|
|
//对未进行评分初始化的司机进行初始化
|
|
|
- KwfDriverScoreAndDetail kwfDriverScoreAndDetail = initDriverScore(updateDriverScoreDto, driversMap, kwfDriverScores);
|
|
|
- //将刚初始化的评分记录放入司机评分集合中
|
|
|
- if(kwfDriverScoreAndDetail != null){
|
|
|
- kwfDriverScores.addAll(kwfDriverScoreAndDetail.getDriverScores());
|
|
|
+ initDriverScore(updateDriverScoreDto, driversMap, kwfDriverScores);
|
|
|
+ if(CollectionUtils.isEmpty(kwfDriverScores)){
|
|
|
+ //无已存在的司机评分,直接返回
|
|
|
+ return;
|
|
|
}
|
|
|
//
|
|
|
//根据不同的操作类型调用不同的更新方法
|
|
|
@@ -94,6 +94,10 @@ public class KwfDriverScoreService {
|
|
|
kwfDriverScoreMapper.insertBatch(kwfDriverScoreAndDetail.getDriverScores());
|
|
|
//批量插入评分明细
|
|
|
kwfDriverScoreDetailMapper.insertBatch(kwfDriverScoreAndDetail.getDriverScoreDetails());
|
|
|
+ try {
|
|
|
+ Thread.sleep(1000);
|
|
|
+ } catch (InterruptedException ignored) {
|
|
|
+ }
|
|
|
return kwfDriverScoreAndDetail;
|
|
|
}
|
|
|
|
|
|
@@ -136,7 +140,7 @@ public class KwfDriverScoreService {
|
|
|
break;
|
|
|
}
|
|
|
//计算当前司机最大可改的分
|
|
|
- BigDecimal changeMaxScore = updateDriverScoreDto.getLogisticsEntScore().subtract(kwfDriverScore.getScore());
|
|
|
+ BigDecimal changeMaxScore = updateDriverScoreDto.getAfterUpdateLogisticsEntScore().subtract(kwfDriverScore.getScore());
|
|
|
//计算司机实际可改的分
|
|
|
BigDecimal changeScore = exceedScore.abs().compareTo(changeMaxScore.abs()) < 0 ? exceedScore : changeMaxScore;
|
|
|
kwfDriverScore.setScore(kwfDriverScore.getScore().add(changeScore));
|
|
|
@@ -170,6 +174,7 @@ public class KwfDriverScoreService {
|
|
|
//构建司机评分记录集合
|
|
|
List<KwfDriverScore> driverScores = new ArrayList<>();
|
|
|
List<KwfDriverScoreDetail> driverScoreDetails = new ArrayList<>();
|
|
|
+ BigDecimal initScore = new BigDecimal("0.00");
|
|
|
IdWorker idWorker = new IdWorker(1L);
|
|
|
for (KwfDriver driver : drivers) {
|
|
|
long scoreId = idWorker.nextId();
|
|
|
@@ -179,14 +184,14 @@ public class KwfDriverScoreService {
|
|
|
driverScore.setProviderEntId(updateDriverScoreDto.getProviderEntId());
|
|
|
driverScore.setLogisticsEntId(updateDriverScoreDto.getLogisticsEntId());
|
|
|
driverScore.setDriverId(driver.getId());
|
|
|
- driverScore.setScore(updateDriverScoreDto.getLogisticsEntScore());
|
|
|
+ driverScore.setScore(updateDriverScoreDto.getAfterUpdateLogisticsEntScore());
|
|
|
driverScore.setCreateBy(LoginUserHolder.getUserId());
|
|
|
driverScore.setCreateTime(now);
|
|
|
driverScore.setUpdateBy(LoginUserHolder.getUserId());
|
|
|
driverScore.setUpdateTime(now);
|
|
|
driverScores.add(driverScore);
|
|
|
//构建司机评分明细
|
|
|
- KwfDriverScoreDetail scoreDetail = buildDriverScoreDetail(updateDriverScoreDto, driverScore, driver, new BigDecimal("0.00"));
|
|
|
+ KwfDriverScoreDetail scoreDetail = buildDriverScoreDetail("司机评分初始化", driverScore, driver, initScore);
|
|
|
driverScoreDetails.add(scoreDetail);
|
|
|
}
|
|
|
|
|
|
@@ -195,7 +200,7 @@ public class KwfDriverScoreService {
|
|
|
|
|
|
private KwfDriverScoreAndDetail buildDriverScoreUpdateRecord(UpdateDriverScoreDto updateDriverScoreDto,Map<Long, KwfDriver> driversMap,List<KwfDriverScore> kwfDriverScores,List<KwfDriverScore> kwfDriverScoresNew){
|
|
|
//原评分记录集合
|
|
|
- Map<Long, KwfDriverScore> originDriverScoreMap = kwfDriverScores.stream().collect(Collectors.toMap(KwfDriverScore::getId, v -> v));
|
|
|
+ Map<Long, KwfDriverScore> originDriverScoreMap = kwfDriverScores.stream().collect(Collectors.toMap(KwfDriverScore::getDriverId, v -> v));
|
|
|
//构建司机评分记录集合
|
|
|
List<KwfDriverScoreDetail> driverScoreDetails = new ArrayList<>();
|
|
|
Date now = new Date();
|
|
|
@@ -205,7 +210,7 @@ public class KwfDriverScoreService {
|
|
|
driverScore.setUpdateTime(now);
|
|
|
//构建司机评分明细信息
|
|
|
KwfDriverScore originDriverScore = originDriverScoreMap.get(driverScore.getDriverId());
|
|
|
- KwfDriverScoreDetail scoreDetail = buildDriverScoreDetail(updateDriverScoreDto, driverScore, driversMap.get(driverScore.getDriverId()), originDriverScore.getScore());
|
|
|
+ KwfDriverScoreDetail scoreDetail = buildDriverScoreDetail(updateDriverScoreDto.getAction(), driverScore, driversMap.get(driverScore.getDriverId()), originDriverScore.getScore());
|
|
|
driverScoreDetails.add(scoreDetail);
|
|
|
}
|
|
|
|
|
|
@@ -218,11 +223,11 @@ public class KwfDriverScoreService {
|
|
|
for (KwfDriverScore driverScore : kwfDriverScores) {
|
|
|
BigDecimal originDriverScore = driverScore.getScore();
|
|
|
//更新评分记录更新信息
|
|
|
- driverScore.setScore(updateDriverScoreDto.getLogisticsEntScore());
|
|
|
+ driverScore.setScore(updateDriverScoreDto.getAfterUpdateLogisticsEntScore());
|
|
|
driverScore.setUpdateBy(LoginUserHolder.getUserId());
|
|
|
driverScore.setUpdateTime(new Date());
|
|
|
//构建司机评分明细信息
|
|
|
- KwfDriverScoreDetail scoreDetail = buildDriverScoreDetail(updateDriverScoreDto, driverScore, driversMap.get(driverScore.getDriverId()), originDriverScore);
|
|
|
+ KwfDriverScoreDetail scoreDetail = buildDriverScoreDetail(updateDriverScoreDto.getAction(), driverScore, driversMap.get(driverScore.getDriverId()), originDriverScore);
|
|
|
driverScoreDetails.add(scoreDetail);
|
|
|
}
|
|
|
|
|
|
@@ -230,7 +235,7 @@ public class KwfDriverScoreService {
|
|
|
}
|
|
|
|
|
|
|
|
|
- private KwfDriverScoreDetail buildDriverScoreDetail(UpdateDriverScoreDto updateDriverScoreDto,KwfDriverScore driverScore,KwfDriver driver,BigDecimal originDriverScore){
|
|
|
+ private KwfDriverScoreDetail buildDriverScoreDetail(String action,KwfDriverScore driverScore,KwfDriver driver,BigDecimal originDriverScore){
|
|
|
IdWorker idWorker = new IdWorker(1L);
|
|
|
Date now = new Date();
|
|
|
//构建司机评分明细信息
|
|
|
@@ -240,7 +245,7 @@ public class KwfDriverScoreService {
|
|
|
if(driver != null){
|
|
|
scoreDetail.setDriverId(driver.getId());
|
|
|
}
|
|
|
- scoreDetail.setAction(updateDriverScoreDto.getAction());
|
|
|
+ scoreDetail.setAction(action);
|
|
|
BigDecimal scoreChange = driverScore.getScore().subtract(originDriverScore);
|
|
|
scoreDetail.setScoreChange(scoreChange);
|
|
|
scoreDetail.setScore(driverScore.getScore());
|