结算的bug修改

This commit is contained in:
haozq 2026-02-03 12:36:45 +08:00
parent cf19884318
commit 631ff33f7a
1 changed files with 67 additions and 40 deletions

View File

@ -192,9 +192,10 @@ public class NewSettlementService {
Comparator.nullsFirst(Comparator.naturalOrder()))); Comparator.nullsFirst(Comparator.naturalOrder())));
ProjectLeaseCostDetail firstItem = items.get(0); ProjectLeaseCostDetail firstItem = items.get(0);
// //
if("1143".equals(machineTypeId)) { if("612".equals(machineTypeId)) {
System.err.println(machineTypeId); System.err.println(machineTypeId);
} }
System.err.println(machineTypeId);
double totalItemAmount = 0.0; double totalItemAmount = 0.0;
//循环逻辑处理 //循环逻辑处理
//默认在操作日期之前 存量 //默认在操作日期之前 存量
@ -383,48 +384,74 @@ public class NewSettlementService {
}else { }else {
if(delNum>0) { if(delNum>0) {
String fasetStarTimeStr1 = formatLocalDateTimeToDate(fasetStarTime); if(fasetStarTime==null &&currentCount==0) {
String operateTimeStr = formatLocalDateTimeToDate(operateTime); fasetStarTime=operateTime;
if(fasetStarTimeStr1.equals(operateTimeStr)) { currentCount=currentCount+addNum;
operateTime = operateTime.plusDays(1); // 然后将领取的座位最后一天单独计算
} double segmentAmount2 = currentCount * unitPrice * 1;
//先把领取的 Map<String, Object> segment2 = new HashMap<>();
long daysBetween=getDay(fasetStarTime,operateTime); LocalDateTime nextDayTime = operateTime.plusDays(1);
if(daysBetween==0) { segment2.put("startTime",operateTime.toString());
daysBetween=1; segment2.put("endTime", nextDayTime.toString());
add =false; segment2.put("days", 1);
} segment2.put("count", currentCount);
segment2.put("amount", segmentAmount2);
segments.add(segment2);
totalItemAmount=totalItemAmount+segmentAmount2;
//然后减去
currentCount=currentCount-delNum;
fasetStarTime=nextDayTime;
String fasetStarTimeStr = formatLocalDateTimeToDate(fasetStarTime);
if(fasetStarTimeStr.equals(endTimeStr)) {
isLast=true;
}
}else {
String fasetStarTimeStr1 = formatLocalDateTimeToDate(fasetStarTime);
String operateTimeStr = formatLocalDateTimeToDate(operateTime);
if(fasetStarTimeStr1.equals(operateTimeStr)) {
operateTime = operateTime.plusDays(1);
}
//先把领取的
long daysBetween=getDay(fasetStarTime,operateTime);
if(daysBetween==0) {
daysBetween=1;
add =false;
}
double segmentAmount = currentCount * unitPrice * daysBetween; double segmentAmount = currentCount * unitPrice * daysBetween;
Map<String, Object> segment = new HashMap<>(); Map<String, Object> segment = new HashMap<>();
segment.put("startTime",fasetStarTime.toString()); segment.put("startTime",fasetStarTime.toString());
segment.put("endTime", operateTime.toString()); segment.put("endTime", operateTime.toString());
segment.put("days", daysBetween); segment.put("days", daysBetween);
totalItemAmount=totalItemAmount+segmentAmount; totalItemAmount=totalItemAmount+segmentAmount;
segment.put("count", currentCount); segment.put("count", currentCount);
segment.put("amount", segmentAmount); segment.put("amount", segmentAmount);
segments.add(segment); segments.add(segment);
currentCount=currentCount+addNum;
// 然后将领取的座位最后一天单独计算 currentCount=currentCount+addNum;
double segmentAmount2 = currentCount * unitPrice * 1;
Map<String, Object> segment2 = new HashMap<>(); // 然后将领取的座位最后一天单独计算
LocalDateTime nextDayTime = operateTime.plusDays(1); double segmentAmount2 = currentCount * unitPrice * 1;
segment2.put("startTime",operateTime.toString()); Map<String, Object> segment2 = new HashMap<>();
segment2.put("endTime", nextDayTime.toString()); LocalDateTime nextDayTime = operateTime.plusDays(1);
segment2.put("days", 1); segment2.put("startTime",operateTime.toString());
segment2.put("count", currentCount); segment2.put("endTime", nextDayTime.toString());
segment2.put("amount", segmentAmount2); segment2.put("days", 1);
segments.add(segment2); segment2.put("count", currentCount);
totalItemAmount=totalItemAmount+segmentAmount2; segment2.put("amount", segmentAmount2);
//然后减去 segments.add(segment2);
currentCount=currentCount-delNum; totalItemAmount=totalItemAmount+segmentAmount2;
fasetStarTime=nextDayTime; //然后减去
String fasetStarTimeStr = formatLocalDateTimeToDate(fasetStarTime); currentCount=currentCount-delNum;
if(fasetStarTimeStr.equals(endTimeStr)) { fasetStarTime=nextDayTime;
isLast=true; String fasetStarTimeStr = formatLocalDateTimeToDate(fasetStarTime);
if(fasetStarTimeStr.equals(endTimeStr)) {
isLast=true;
}
} }
}else { }else {
//无之前的数据的 第一次进来的 //无之前的数据的 第一次进来的
if(fasetStarTime==null) { if(fasetStarTime==null) {