This commit is contained in:
shuo.wang
2025-05-14 10:37:31 +08:00
parent 11de076ba2
commit dd3aa88833

View File

@@ -23,6 +23,9 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
@@ -44,59 +47,73 @@ public class FranchiseReportServiceImpl implements FranchiseReportService {
@Override
public List<FranchiseReportResponse> getFranchiseReport(FranchiseReportRequest request) {
// if (StringUtils.isBlank(request.getBuildStartTime()) || StringUtils.isBlank(request.getBuildEndTime())) {
// throw new ServiceException(ErrorCodeEnum.TIME_NULL_FALSE);
// }
// //集团查大区
// List<Long> regionIdByGroupName = bigRegionDAO.getRegionIdByGroupName(request.getJoinGroupName());
// if (CollectionUtils.isNotEmpty(regionIdByGroupName)) {
// request.getRegionIds().addAll(regionIdByGroupName);
// }
// List<FranchiseReportDTO> shopFranchiseReportList = shopInfoDAO.getShopFranchiseReportList(request);
// if (CollectionUtils.isEmpty(shopFranchiseReportList)) {
// log.info("查询门店数据为空");
// return null;
// }
// List<FranchiseReportResponse> responseList = new ArrayList<>();
// List<Long> shopIds = shopFranchiseReportList.stream().map(FranchiseReportDTO::getShopId).collect(Collectors.toList());
// Set<Long> regionSet = shopFranchiseReportList.stream().map(FranchiseReportDTO::getRegionId).collect(Collectors.toSet());
// Map<Long, List<FranchiseReportDTO>> shopByRegionMap = shopFranchiseReportList.stream().collect(Collectors.groupingBy(FranchiseReportDTO::getRegionId));
// //加盟费账单
// List<FranchiseFeeDO> franchiseFeeList = franchiseFeeMapper.getFranchiseFeeByShopIds(shopIds);
// Map<Long, FranchiseFeeDO> franchiseFeeMap = franchiseFeeList.stream().collect(Collectors.toMap(FranchiseFeeDO::getShopId, franchiseFeeDO -> franchiseFeeDO));
// List<BigRegionDO> bigRegionDOList = bigRegionDAO.getByRegionIdList(new ArrayList<>(regionSet));
// Map<Long, BigRegionDO> bigRegionDOMap = bigRegionDOList.stream().collect(Collectors.toMap(BigRegionDO::getRegionId, bigRegionDO -> bigRegionDO));
// Map<Long, FranchiseReportResponse> responseByRegionIdMap = new HashMap<>();
//
// for (FranchiseReportDTO shopFranchiseReportDTO : shopFranchiseReportList) {
// FranchiseReportResponse response = responseByRegionIdMap.get(shopFranchiseReportDTO.getRegionId());
// if (response == null){
// response = new FranchiseReportResponse();
// }
// if (StoreTypeEnum.NO_SHOW_STORE.getCode().equals(shopFranchiseReportDTO.getStoreType())){
// response.setNoShowStoreNum(response.getNoShowStoreNum() + 1);
// }else if (StoreTypeEnum.ORDINARY_STORE.getCode().equals(shopFranchiseReportDTO.getStoreType())){
// response.setNormalStoreNum(response.getNormalStoreNum() + 1);
// }else if (StoreTypeEnum.RESTAURANT_STORE.getCode().equals(shopFranchiseReportDTO.getStoreType())){
// response.setRestaurantStoreNum(response.getRestaurantStoreNum() + 1);
// }
// response.setStoreNum(response.getStoreNum() + 1);
// FranchiseFeeDO franchiseFeeDO = franchiseFeeMap.get(shopFranchiseReportDTO.getShopId());
// if (franchiseFeeDO != null){
// response.setFranchiseFeeTotal(response.getFranchiseFeeTotal().add(new BigDecimal(franchiseFeeDO.getYearFranchiseFee())));
// response.setLoanMarginTotal(response.getLoanMarginTotal().add(new BigDecimal(franchiseFeeDO.getLoanMargin())));
// response.setFirstYearManagementFeeTotal(response.getFirstYearManagementFeeTotal().add(new BigDecimal(franchiseFeeDO.getFirstYearManageFee())));
// response.setFirstYearBrandingFeeTotal(response.getFirstYearBrandingFeeTotal().add(new BigDecimal(franchiseFeeDO.getFirstYearFee())));
// response.setPerformanceBondTotal(response.getPerformanceBondTotal().add(new BigDecimal(franchiseFeeDO.getPerformanceBond())));
// response.setManagementBrandingDesignFeeTotal(response.getManagementBrandingDesignFeeTotal()
// .add(new BigDecimal(franchiseFeeDO.getYearFranchiseFee()))
// .add(new BigDecimal(franchiseFeeDO.getFirstYearManageFee()))
// .add(new BigDecimal(franchiseFeeDO.getFirstYearFee()))
// .add(new BigDecimal(franchiseFeeDO.getPerformanceBond())));
// }
// responseByRegionIdMap.put(shopFranchiseReportDTO.getRegionId(), response);
// }
//
if (StringUtils.isBlank(request.getBuildStartTime()) || StringUtils.isBlank(request.getBuildEndTime())) {
throw new ServiceException(ErrorCodeEnum.TIME_NULL_FALSE);
}
//集团查大区
List<Long> regionIdByGroupName = bigRegionDAO.getRegionIdByGroupName(request.getJoinGroupName());
if (CollectionUtils.isNotEmpty(regionIdByGroupName)) {
request.getRegionIds().addAll(regionIdByGroupName);
}
List<FranchiseReportDTO> shopFranchiseReportList = shopInfoDAO.getShopFranchiseReportList(request);
if (CollectionUtils.isEmpty(shopFranchiseReportList)) {
log.info("查询门店数据为空");
return null;
}
List<FranchiseReportResponse> responseList = new ArrayList<>();
List<Long> shopIds = shopFranchiseReportList.stream().map(FranchiseReportDTO::getShopId).collect(Collectors.toList());
Set<Long> regionSet = shopFranchiseReportList.stream().map(FranchiseReportDTO::getRegionId).collect(Collectors.toSet());
//加盟费账单
List<FranchiseFeeDO> franchiseFeeList = franchiseFeeMapper.getFranchiseFeeByShopIds(shopIds);
Map<Long, FranchiseFeeDO> franchiseFeeMap = franchiseFeeList.stream().collect(Collectors.toMap(FranchiseFeeDO::getShopId, franchiseFeeDO -> franchiseFeeDO));
List<BigRegionDO> bigRegionDOList = bigRegionDAO.getByRegionIdList(new ArrayList<>(regionSet));
Map<Long, BigRegionDO> bigRegionDOMap = bigRegionDOList.stream().collect(Collectors.toMap(BigRegionDO::getRegionId, bigRegionDO -> bigRegionDO));
Map<Long, FranchiseReportResponse> responseByRegionIdMap = new HashMap<>();
for (FranchiseReportDTO shopFranchiseReportDTO : shopFranchiseReportList) {
FranchiseReportResponse response = responseByRegionIdMap.get(shopFranchiseReportDTO.getRegionId());
if (response == null) {
response = new FranchiseReportResponse();
response.setJoinGroupName(bigRegionDOMap.getOrDefault(shopFranchiseReportDTO.getRegionId(), new BigRegionDO()).getGroupName());
}
if (StoreTypeEnum.NO_SHOW_STORE.getCode().equals(shopFranchiseReportDTO.getStoreType())) {
response.setNoShowStoreNum(response.getNoShowStoreNum() + 1);
} else if (StoreTypeEnum.ORDINARY_STORE.getCode().equals(shopFranchiseReportDTO.getStoreType())) {
response.setNormalStoreNum(response.getNormalStoreNum() + 1);
} else if (StoreTypeEnum.RESTAURANT_STORE.getCode().equals(shopFranchiseReportDTO.getStoreType())) {
response.setRestaurantStoreNum(response.getRestaurantStoreNum() + 1);
}
response.setStoreNum(response.getStoreNum() + 1);
FranchiseFeeDO franchiseFeeDO = franchiseFeeMap.get(shopFranchiseReportDTO.getShopId());
if (franchiseFeeDO != null) {
response.setFranchiseFeeTotal(response.getFranchiseFeeTotal().add(new BigDecimal(franchiseFeeDO.getYearFranchiseFee())));
response.setLoanMarginTotal(response.getLoanMarginTotal().add(new BigDecimal(franchiseFeeDO.getLoanMargin())));
response.setFirstYearManagementFeeTotal(response.getFirstYearManagementFeeTotal().add(new BigDecimal(franchiseFeeDO.getFirstYearManageFee())));
response.setFirstYearBrandingFeeTotal(response.getFirstYearBrandingFeeTotal().add(new BigDecimal(franchiseFeeDO.getFirstYearFee())));
response.setPerformanceBondTotal(response.getPerformanceBondTotal().add(new BigDecimal(franchiseFeeDO.getPerformanceBond())));
response.setManagementBrandingDesignFeeTotal(response.getManagementBrandingDesignFeeTotal()
.add(new BigDecimal(franchiseFeeDO.getYearFranchiseFee()))
.add(new BigDecimal(franchiseFeeDO.getFirstYearManageFee()))
.add(new BigDecimal(franchiseFeeDO.getFirstYearFee()))
.add(new BigDecimal(franchiseFeeDO.getPerformanceBond())));
}
responseByRegionIdMap.put(shopFranchiseReportDTO.getRegionId(), response);
}
FranchiseReportRequest yesterdayRequest = new FranchiseReportRequest();
yesterdayRequest.setJoinGroupName(request.getJoinGroupName());
yesterdayRequest.setRegionIds(request.getRegionIds());
yesterdayRequest.setStoreTypes(request.getStoreTypes());
LocalDate now = LocalDate.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
//昨日 00:00:00
LocalDateTime yesterdayStartDate = now.minusDays(1).atStartOfDay();
String yesterdayStartTime = yesterdayStartDate.format(formatter);
//昨日 23:59:59
LocalDateTime yesterdayEndDate = now.minusDays(1).atTime(23,59,59);
String yesterdayEndTime = yesterdayEndDate.format(formatter);
yesterdayRequest.setBuildStartTime(yesterdayStartTime);
yesterdayRequest.setBuildEndTime(yesterdayEndTime);
List<FranchiseReportDTO> yesterdayShopFranchiseReportList = shopInfoDAO.getShopFranchiseReportList(yesterdayRequest);
return null;
}
}