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