소스 검색

refactor: 更新统计逻辑

shc 3 년 전
부모
커밋
fc11c0deb5

+ 15 - 1
hnqz-visual/hnqz-daemon-quartz/src/main/java/com/qunzhixinxi/hnqz/daemon/quartz/entity/SingleMemberSettleSameAmountInSeveralMonths.java

@@ -9,10 +9,10 @@ import lombok.EqualsAndHashCode;
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
+import java.util.Objects;
 
 
 @Data
-@EqualsAndHashCode
 @TableName(value = "single_member_settle_same_amount_in_several_months")
 public class SingleMemberSettleSameAmountInSeveralMonths implements Serializable {
 
@@ -94,4 +94,18 @@ public class SingleMemberSettleSameAmountInSeveralMonths implements Serializable
 	 */
 	private LocalDateTime createTime;
 
+	@Override
+	public boolean equals(Object o) {
+		if (this == o) return true;
+		if (o == null || getClass() != o.getClass()) return false;
+
+		SingleMemberSettleSameAmountInSeveralMonths that = (SingleMemberSettleSameAmountInSeveralMonths) o;
+
+		return Objects.equals(noteId, that.noteId);
+	}
+
+	@Override
+	public int hashCode() {
+		return noteId != null ? noteId.hashCode() : 0;
+	}
 }

+ 4 - 7
hnqz-visual/hnqz-daemon-quartz/src/main/java/com/qunzhixinxi/hnqz/daemon/quartz/service/impl/WmScorePackageSettleNoteServiceImpl.java

@@ -81,7 +81,7 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 				continue;
 			}
 			// 遍历个人
-			List<BigDecimal> tmp = new ArrayList<>(entry.getValue().keySet().size());
+			Map<BigDecimal, List<SingleMemberSettleSameAmountInSeveralMonths>> temp = new HashMap<>();
 			for (Map.Entry<String, List<SingleMemberSettleSameAmountInSeveralMonths>> ent : entry.getValue().entrySet()) {
 				// 计算每个月份的金额
 				Optional<BigDecimal> reduce = ent.getValue().stream().map(SingleMemberSettleSameAmountInSeveralMonths::getSettleAmount).filter(Objects::nonNull)
@@ -92,16 +92,13 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 				}
 
 				// 判断是否有相同的金额
-				if (tmp.contains(reduce.get())) {
+				if (temp.containsKey(reduce.get())) {
+					riskList.addAll(temp.get(reduce.get()));
 					riskList.addAll(ent.getValue());
 				}
 				// 记录月份结算值
 				else {
-					// 如果 记录不存在 证明 连续月份金额不相同
-					if (CollUtil.isNotEmpty(tmp)) {
-						break;
-					}
-					tmp.add(reduce.get());
+					temp.put(reduce.get(),ent.getValue());
 				}
 			}
 		}