门店明细表
This commit is contained in:
@@ -2,6 +2,7 @@ package com.cool.store.service;
|
||||
|
||||
import com.cool.store.request.FranchiseReportRequest;
|
||||
import com.cool.store.response.FranchiseReportResponse;
|
||||
import com.cool.store.response.ShopReportResponse;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
|
||||
import java.util.List;
|
||||
@@ -15,4 +16,6 @@ import java.util.List;
|
||||
public interface FranchiseReportService {
|
||||
|
||||
List<FranchiseReportResponse> zxjpOpenShopReport(FranchiseReportRequest request);
|
||||
//门店维度
|
||||
PageInfo<ShopReportResponse> zxjpOpenShopReportPage(FranchiseReportRequest request);
|
||||
}
|
||||
|
||||
@@ -1,19 +1,21 @@
|
||||
package com.cool.store.service.impl;
|
||||
|
||||
import com.cool.store.dao.BigRegionDAO;
|
||||
import com.cool.store.dao.FranchiseFeeDAO;
|
||||
import com.cool.store.dao.ShopInfoDAO;
|
||||
import com.cool.store.dao.*;
|
||||
import com.cool.store.dto.FranchiseReportDTO;
|
||||
import com.cool.store.entity.BigRegionDO;
|
||||
import com.cool.store.entity.FranchiseFeeDO;
|
||||
import com.cool.store.enums.ErrorCodeEnum;
|
||||
import com.cool.store.enums.FranchiseBrandEnum;
|
||||
import com.cool.store.enums.JoinModeEnum;
|
||||
import com.cool.store.enums.StoreTypeEnum;
|
||||
import com.cool.store.exception.ServiceException;
|
||||
import com.cool.store.mapper.FranchiseFeeMapper;
|
||||
import com.cool.store.request.FranchiseReportRequest;
|
||||
import com.cool.store.response.FranchiseReportResponse;
|
||||
import com.cool.store.response.ShopReportResponse;
|
||||
import com.cool.store.service.FranchiseReportService;
|
||||
import com.cool.store.utils.poi.StringUtils;
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import groovy.util.logging.Log4j;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
@@ -39,12 +41,16 @@ import java.util.stream.Collectors;
|
||||
@Slf4j
|
||||
@Service
|
||||
public class FranchiseReportServiceImpl implements FranchiseReportService {
|
||||
@Resource
|
||||
private EnterpriseUserDAO enterpriseUserDAO;
|
||||
@Resource
|
||||
private BigRegionDAO bigRegionDAO;
|
||||
@Resource
|
||||
private ShopInfoDAO shopInfoDAO;
|
||||
@Resource
|
||||
private FranchiseFeeMapper franchiseFeeMapper;
|
||||
@Resource
|
||||
private RegionDao regionDao;
|
||||
|
||||
@Override
|
||||
public List<FranchiseReportResponse> zxjpOpenShopReport(FranchiseReportRequest request) {
|
||||
@@ -147,8 +153,8 @@ public class FranchiseReportServiceImpl implements FranchiseReportService {
|
||||
List<FranchiseReportDTO> yesterdayShopFranchiseReportList = shopInfoDAO.getShopFranchiseReportList(yesterdayRequest);
|
||||
DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
||||
Map<Long, List<FranchiseReportDTO>> yesterdayMap = new HashMap<>();
|
||||
if (CollectionUtils.isNotEmpty(yesterdayShopFranchiseReportList)){
|
||||
yesterdayMap = yesterdayShopFranchiseReportList.stream().collect(Collectors.groupingBy(FranchiseReportDTO::getRegionId));
|
||||
if (CollectionUtils.isNotEmpty(yesterdayShopFranchiseReportList)) {
|
||||
yesterdayMap = yesterdayShopFranchiseReportList.stream().collect(Collectors.groupingBy(FranchiseReportDTO::getRegionId));
|
||||
}
|
||||
//查集团维度
|
||||
if (CollectionUtils.isEmpty(request.getJoinGroupName()) && CollectionUtils.isEmpty(request.getRegionIds())) {
|
||||
@@ -190,6 +196,84 @@ public class FranchiseReportServiceImpl implements FranchiseReportService {
|
||||
return list;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageInfo<ShopReportResponse> zxjpOpenShopReportPage(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)) {
|
||||
if (CollectionUtils.isEmpty(request.getRegionIds())) {
|
||||
request.setRegionIds(regionIdByGroupName);
|
||||
} else {
|
||||
request.getRegionIds().retainAll(regionIdByGroupName);
|
||||
if (CollectionUtils.isEmpty(request.getRegionIds())) {
|
||||
throw new ServiceException(ErrorCodeEnum.REGION_INTERSECTION_IS_NULL);
|
||||
}
|
||||
}
|
||||
}
|
||||
PageHelper.startPage(request.getPageNum(), request.getPageSize());
|
||||
List<FranchiseReportDTO> shopFranchiseReportList = shopInfoDAO.getShopFranchiseReportList(request);
|
||||
if (CollectionUtils.isEmpty(shopFranchiseReportList)) {
|
||||
log.info("查询门店数据为空");
|
||||
return null;
|
||||
}
|
||||
List<Long> shopIds = shopFranchiseReportList.stream().map(FranchiseReportDTO::getShopId).collect(Collectors.toList());
|
||||
Set<Long> regionSet = shopFranchiseReportList.stream().map(FranchiseReportDTO::getRegionId).collect(Collectors.toSet());
|
||||
Set<String> investmentManagerUsers = shopFranchiseReportList.stream().map(FranchiseReportDTO::getInvestmentManager).collect(Collectors.toSet());
|
||||
Map<String, String> userNameMap = enterpriseUserDAO.getUserNameMap(new ArrayList<>(investmentManagerUsers));
|
||||
//加盟费账单
|
||||
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, String> regionNameMap = regionDao.getRegionNameMap(new ArrayList<>(regionSet));
|
||||
List<ShopReportResponse> list = new ArrayList<>();
|
||||
for (FranchiseReportDTO shopFranchiseReportDTO : shopFranchiseReportList) {
|
||||
BigRegionDO bigRegionDO = bigRegionDOMap.getOrDefault(shopFranchiseReportDTO.getRegionId(), new BigRegionDO());
|
||||
String regionName = regionNameMap.getOrDefault(shopFranchiseReportDTO.getRegionId(), "");
|
||||
ShopReportResponse response = new ShopReportResponse();
|
||||
response.setRegionId(shopFranchiseReportDTO.getRegionId());
|
||||
response.setRegionName(regionName);
|
||||
String groupName = bigRegionDO.getGroupName();
|
||||
if (StringUtils.isBlank(groupName)) {
|
||||
response.setJoinGroupName("-");
|
||||
} else {
|
||||
response.setJoinGroupName(groupName);
|
||||
}
|
||||
response.setBuildTime(shopFranchiseReportDTO.getActualCompleteTime());
|
||||
response.setShopCode(shopFranchiseReportDTO.getShopCode());
|
||||
response.setShopName(shopFranchiseReportDTO.getShopName());
|
||||
response.setStoreType(StoreTypeEnum.getMessage(shopFranchiseReportDTO.getStoreType()));
|
||||
response.setJoinMode(JoinModeEnum.getByCode(shopFranchiseReportDTO.getJoinMode()));
|
||||
response.setFranchiseBrand(FranchiseBrandEnum.getDescByCode(shopFranchiseReportDTO.getFranchiseBrand()));
|
||||
response.setInvestmentManagerName(userNameMap.getOrDefault(shopFranchiseReportDTO.getInvestmentManager(), ""));
|
||||
FranchiseFeeDO franchiseFeeDO = franchiseFeeMap.get(shopFranchiseReportDTO.getShopId());
|
||||
if (franchiseFeeDO != null) {
|
||||
response.setFranchiseFee(response.getFranchiseFee().add(new BigDecimal(franchiseFeeDO.getYearFranchiseFee())));
|
||||
response.setLoanMargin(response.getLoanMargin().add(new BigDecimal(franchiseFeeDO.getLoanMargin())));
|
||||
response.setFirstYearManagementFee(response.getFirstYearManagementFee().add(new BigDecimal(franchiseFeeDO.getFirstYearManageFee())));
|
||||
response.setFirstYearBrandingFee(response.getFirstYearBrandingFee().add(new BigDecimal(franchiseFeeDO.getFirstYearFee())));
|
||||
response.setPerformanceBond(response.getPerformanceBond().add(new BigDecimal(franchiseFeeDO.getPerformanceBond())));
|
||||
response.setManagementBrandingDesignFeeTotal(response.getManagementBrandingDesignFeeTotal()
|
||||
.add(new BigDecimal(franchiseFeeDO.getFirstYearManageFee()))
|
||||
.add(new BigDecimal(franchiseFeeDO.getFirstYearFee()))
|
||||
.add(new BigDecimal(franchiseFeeDO.getPerformanceBond())));
|
||||
response.setTotal(response.getTotal()
|
||||
.add(response.getManagementBrandingDesignFeeTotal())
|
||||
.add(response.getLoanMargin())
|
||||
.add(response.getFranchiseFee()));
|
||||
}
|
||||
list.add(response);
|
||||
}
|
||||
if (CollectionUtils.isEmpty(list)) {
|
||||
log.info("数据为空");
|
||||
return null;
|
||||
}
|
||||
return new PageInfo<>(list.stream().sorted(Comparator.comparing(ShopReportResponse::getBuildTime).reversed()).collect(Collectors.toList()));
|
||||
}
|
||||
|
||||
public static void sortByName(List<FranchiseReportResponse> list) {
|
||||
list.sort(Comparator.comparingInt(f -> extractNumberFromName(f.getJoinGroupName())));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user