|
@@ -2,10 +2,7 @@ package com.zoniot.ccrc.service.impl;
|
|
|
|
|
|
import com.zoniot.ccrc.commom.utils.UserUtil;
|
|
|
import com.zoniot.ccrc.dao.DeviceMapper;
|
|
|
-import com.zoniot.ccrc.dto.LoginUser;
|
|
|
-import com.zoniot.ccrc.dto.UseWaterAnalyze;
|
|
|
-import com.zoniot.ccrc.dto.UseWaterDto;
|
|
|
-import com.zoniot.ccrc.dto.WaterPriceDto;
|
|
|
+import com.zoniot.ccrc.dto.*;
|
|
|
import com.zoniot.ccrc.service.MongoMeterReadRecordService;
|
|
|
import com.zoniot.ccrc.service.StatisticsService;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
@@ -13,12 +10,11 @@ import org.springframework.stereotype.Service;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
import java.math.BigDecimal;
|
|
|
+import java.math.BigInteger;
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.time.format.DateTimeFormatter;
|
|
|
import java.time.temporal.TemporalAdjusters;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.Comparator;
|
|
|
-import java.util.List;
|
|
|
+import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
@Service
|
|
@@ -118,20 +114,106 @@ public class StatisticsServiceImpl implements StatisticsService {
|
|
|
return useWaterAnalyze;
|
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
- public WaterPriceDto waterPriceQuery(Long deviceId, String date) {
|
|
|
- return null;
|
|
|
- }
|
|
|
+
|
|
|
|
|
|
@Override
|
|
|
public Double getDeviceVolume(Integer startDate, Integer endDate) {
|
|
|
Long deviceId=getDeviceId();
|
|
|
return mongoMeterReadRecordService.getDeviceVolume(deviceId, startDate, endDate);
|
|
|
}
|
|
|
- Long getDeviceId(){
|
|
|
+ @Override
|
|
|
+ public Long getDeviceId(){
|
|
|
LoginUser loginClientUser = UserUtil.getCurrentUser();
|
|
|
Long deviceId= deviceMapper.getDeviceIdByUserNumber(loginClientUser.getId());
|
|
|
|
|
|
return deviceId;
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public PriceInfo waterPriceQuery() {
|
|
|
+ LoginUser loginClientUser = UserUtil.getCurrentUser();
|
|
|
+
|
|
|
+ PriceInfo priceInfo = new PriceInfo();
|
|
|
+ List<PriceInfo> priceInfos = deviceMapper.getPriceInfo();
|
|
|
+ Map<String,List<LadderInfoDto>> feeType = new HashMap<>();
|
|
|
+ List<FeeTypeDto> feeTypeDtos = new ArrayList<>();
|
|
|
+ if(priceInfos!=null&&priceInfos.size()>0)
|
|
|
+ {
|
|
|
+ priceInfo.setWaterTypeName(priceInfos.get(0).getWaterTypeName());
|
|
|
+ for (PriceInfo priceInfo1:priceInfos)
|
|
|
+ {
|
|
|
+ if(!feeType.containsKey(priceInfo1.getFeeTypeName()))
|
|
|
+ {
|
|
|
+ LadderInfoDto ladderInfoDto = new LadderInfoDto();
|
|
|
+ Integer ladderLever = priceInfo1.getLadderlevel();
|
|
|
+ switch (ladderLever)
|
|
|
+ {
|
|
|
+ case 1:ladderInfoDto.setLadderName("第一阶梯");
|
|
|
+ ladderInfoDto.setMinValue(BigDecimal.valueOf(0));
|
|
|
+ ladderInfoDto.setMaxValue(priceInfo1.getAvailable1());
|
|
|
+ ladderInfoDto.setWaterPrice(priceInfo1.getPrice());
|
|
|
+ break;
|
|
|
+ case 2:ladderInfoDto.setLadderName("第二阶梯");
|
|
|
+ ladderInfoDto.setMinValue(priceInfo1.getAvailable1());
|
|
|
+ ladderInfoDto.setMaxValue(priceInfo1.getAvailable2());
|
|
|
+ ladderInfoDto.setWaterPrice(priceInfo1.getPrice());
|
|
|
+ break;
|
|
|
+ case 3:ladderInfoDto.setLadderName("第三阶梯");
|
|
|
+ ladderInfoDto.setMinValue(priceInfo1.getAvailable2());
|
|
|
+ ladderInfoDto.setMaxValue(priceInfo1.getAvailable3());
|
|
|
+ ladderInfoDto.setWaterPrice(priceInfo1.getPrice());
|
|
|
+ break;
|
|
|
+ case 4:ladderInfoDto.setLadderName("第四阶梯");
|
|
|
+ ladderInfoDto.setMinValue(priceInfo1.getAvailable3());
|
|
|
+ ladderInfoDto.setMaxValue(priceInfo1.getAvailable4());
|
|
|
+ ladderInfoDto.setWaterPrice(priceInfo1.getPrice());
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ List<LadderInfoDto> ladderInfoDtos = new ArrayList<>();
|
|
|
+ ladderInfoDtos.add(ladderInfoDto);
|
|
|
+ feeType.put(priceInfo1.getFeeTypeName(),ladderInfoDtos);
|
|
|
+
|
|
|
+ }else
|
|
|
+ {
|
|
|
+ LadderInfoDto ladderInfoDto = new LadderInfoDto();
|
|
|
+ Integer ladderLever = priceInfo1.getLadderlevel();
|
|
|
+ switch (ladderLever)
|
|
|
+ {
|
|
|
+ case 1:ladderInfoDto.setLadderName("第一阶梯");
|
|
|
+ ladderInfoDto.setMinValue(BigDecimal.valueOf(0));
|
|
|
+ ladderInfoDto.setMaxValue(priceInfo1.getAvailable1());
|
|
|
+ ladderInfoDto.setWaterPrice(priceInfo1.getPrice());
|
|
|
+ break;
|
|
|
+ case 2:ladderInfoDto.setLadderName("第二阶梯");
|
|
|
+ ladderInfoDto.setMinValue(priceInfo1.getAvailable1());
|
|
|
+ ladderInfoDto.setMaxValue(priceInfo1.getAvailable2());
|
|
|
+ ladderInfoDto.setWaterPrice(priceInfo1.getPrice());
|
|
|
+ break;
|
|
|
+ case 3:ladderInfoDto.setLadderName("第三阶梯");
|
|
|
+ ladderInfoDto.setMinValue(priceInfo1.getAvailable2());
|
|
|
+ ladderInfoDto.setMaxValue(priceInfo1.getAvailable3());
|
|
|
+ ladderInfoDto.setWaterPrice(priceInfo1.getPrice());
|
|
|
+ break;
|
|
|
+ case 4:ladderInfoDto.setLadderName("第四阶梯");
|
|
|
+ ladderInfoDto.setMinValue(priceInfo1.getAvailable3());
|
|
|
+ ladderInfoDto.setMaxValue(priceInfo1.getAvailable4());
|
|
|
+ ladderInfoDto.setWaterPrice(priceInfo1.getPrice());
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ feeType.get(priceInfo1.getFeeTypeName()).add(ladderInfoDto);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ for (Map.Entry<String, List<LadderInfoDto>> entry : feeType.entrySet()) {
|
|
|
+ FeeTypeDto feeTypeDto = new FeeTypeDto();
|
|
|
+ feeTypeDto.setFeeTypeName(entry.getKey());
|
|
|
+ feeTypeDto.setLadderInfoDtos(entry.getValue());
|
|
|
+ feeTypeDtos.add(feeTypeDto);
|
|
|
+ }
|
|
|
+
|
|
|
+ priceInfo.setCustomerName(loginClientUser.getCustomerName());
|
|
|
+ priceInfo.setFeeTypeDtos(feeTypeDtos);
|
|
|
+ }
|
|
|
+ return priceInfo;
|
|
|
+
|
|
|
+ }
|
|
|
}
|