Merge branch 'cc_20250513_franchise_report' into 'master'

Cc 20250513 franchise report

See merge request hangzhou/java/custom_zxjp!84
This commit is contained in:
苏竹红
2025-05-16 09:16:00 +00:00
6 changed files with 76 additions and 23 deletions

View File

@@ -72,7 +72,7 @@ public class ZxjpApiRequest {
@ApiModelProperty(value = "所属督导")
private String shopSupervisorUserName;
@ApiModelProperty(value = "门店类型1-加盟公司、2-加盟部加盟店、3-自有加盟、4-强加盟、)")
@ApiModelProperty(value = "加盟模式1-加盟公司、2-加盟部加盟店、3-自有加盟、4-强加盟、)")
private Integer joinMode;
@ApiModelProperty(value = "经营模式0 无 1直营 2加盟")

View File

@@ -8,6 +8,7 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
/**
* @Author: WangShuo
@@ -89,6 +90,9 @@ public class FranchiseReportResponse {
private Integer yesterdayStoreNum = 0;
@ExcelIgnore
private Long regionId;
//集团维度使用
@ExcelIgnore
private List<Long> regionIds;
}

View File

@@ -27,6 +27,7 @@ import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
@@ -57,8 +58,8 @@ public class FranchiseReportServiceImpl implements FranchiseReportService {
request.setRegionIds(regionIdByGroupName);
} else {
request.getRegionIds().retainAll(regionIdByGroupName);
if (CollectionUtils.isEmpty(request.getRegionIds())){
throw new ServiceException(ErrorCodeEnum.REGION_INTERSECTION_IS_NULL);
if (CollectionUtils.isEmpty(request.getRegionIds())) {
throw new ServiceException(ErrorCodeEnum.REGION_INTERSECTION_IS_NULL);
}
}
}
@@ -75,14 +76,30 @@ public class FranchiseReportServiceImpl implements FranchiseReportService {
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<>();
Map<String, FranchiseReportResponse> responseByJoinGroupNameMap = new HashMap<>();
for (FranchiseReportDTO shopFranchiseReportDTO : shopFranchiseReportList) {
FranchiseReportResponse response = responseByRegionIdMap.get(shopFranchiseReportDTO.getRegionId());
if (response == null) {
response = new FranchiseReportResponse();
BigRegionDO bigRegionDO = bigRegionDOMap.get(shopFranchiseReportDTO.getRegionId());
if (bigRegionDO == null) {
continue;
}
FranchiseReportResponse response = new FranchiseReportResponse();
//查集团维度
if (CollectionUtils.isEmpty(request.getJoinGroupName()) && CollectionUtils.isEmpty(request.getRegionIds())) {
response = responseByJoinGroupNameMap.getOrDefault(bigRegionDO.getGroupName(), new FranchiseReportResponse());
response.setJoinGroupName(bigRegionDO.getGroupName());
if (CollectionUtils.isEmpty(response.getRegionIds())) {
response.setRegionIds(new ArrayList<>());
}
response.getRegionIds().add(shopFranchiseReportDTO.getRegionId());
} else {
//查大区维度
response = responseByRegionIdMap.getOrDefault(shopFranchiseReportDTO.getRegionId(), new FranchiseReportResponse());
}
if (CollectionUtils.isNotEmpty(request.getJoinGroupName()) || CollectionUtils.isNotEmpty(request.getRegionIds())) {
response.setRegionId(shopFranchiseReportDTO.getRegionId());
response.setRegionName(bigRegionDOMap.getOrDefault(shopFranchiseReportDTO.getRegionId(), new BigRegionDO()).getRegionName());
String groupName = bigRegionDOMap.getOrDefault(shopFranchiseReportDTO.getRegionId(), new BigRegionDO()).getGroupName();
response.setRegionName(bigRegionDO.getRegionName());
String groupName = bigRegionDO.getGroupName();
if (StringUtils.isBlank(groupName)) {
continue;
}
@@ -108,7 +125,11 @@ public class FranchiseReportServiceImpl implements FranchiseReportService {
.add(new BigDecimal(franchiseFeeDO.getFirstYearFee()))
.add(new BigDecimal(franchiseFeeDO.getPerformanceBond())));
}
responseByRegionIdMap.put(shopFranchiseReportDTO.getRegionId(), response);
if (CollectionUtils.isEmpty(request.getJoinGroupName()) && CollectionUtils.isEmpty(request.getRegionIds())) {
responseByJoinGroupNameMap.put(bigRegionDO.getGroupName(), response);
} else {
responseByRegionIdMap.put(shopFranchiseReportDTO.getRegionId(), response);
}
}
FranchiseReportRequest yesterdayRequest = new FranchiseReportRequest();
yesterdayRequest.setRegionIds(request.getRegionIds());
@@ -125,8 +146,23 @@ public class FranchiseReportServiceImpl implements FranchiseReportService {
yesterdayRequest.setBuildEndTime(yesterdayEndTime);
List<FranchiseReportDTO> yesterdayShopFranchiseReportList = shopInfoDAO.getShopFranchiseReportList(yesterdayRequest);
DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
if (CollectionUtils.isNotEmpty(yesterdayShopFranchiseReportList)) {
Map<Long, List<FranchiseReportDTO>> yesterdayMap = yesterdayShopFranchiseReportList.stream().collect(Collectors.groupingBy(FranchiseReportDTO::getRegionId));
Map<Long, List<FranchiseReportDTO>> yesterdayMap = new HashMap<>();
if (CollectionUtils.isNotEmpty(yesterdayShopFranchiseReportList)){
yesterdayMap = yesterdayShopFranchiseReportList.stream().collect(Collectors.groupingBy(FranchiseReportDTO::getRegionId));
}
//查集团维度
if (CollectionUtils.isEmpty(request.getJoinGroupName()) && CollectionUtils.isEmpty(request.getRegionIds())) {
for (FranchiseReportResponse responseByJoinGroupName : responseByJoinGroupNameMap.values()) {
List<Long> regionIds = responseByJoinGroupName.getRegionIds();
for (Long regionId : regionIds) {
BigRegionDO bigRegionDO = bigRegionDOMap.get(regionId);
List<FranchiseReportDTO> yesterdayList = yesterdayMap.getOrDefault(bigRegionDO.getRegionId(), new ArrayList<>());
responseByJoinGroupName.setYesterdayDate(yesterdayStartDate.format(formatter1));
responseByJoinGroupName.setYesterdayStoreNum(responseByJoinGroupName.getYesterdayStoreNum() + (CollectionUtils.isEmpty(yesterdayList) ? 0 : yesterdayList.size()));
}
}
} else {
//大区维度
for (Long regionId : responseByRegionIdMap.keySet()) {
FranchiseReportResponse response = responseByRegionIdMap.get(regionId);
if (Objects.isNull(response)) {
@@ -139,7 +175,13 @@ public class FranchiseReportServiceImpl implements FranchiseReportService {
}
}
List<FranchiseReportResponse> list = new ArrayList<>(responseByRegionIdMap.values());
List<FranchiseReportResponse> list = new ArrayList<>();
if (CollectionUtils.isEmpty(request.getJoinGroupName()) && CollectionUtils.isEmpty(request.getRegionIds())) {
list.addAll(responseByJoinGroupNameMap.values());
} else {
list.addAll(responseByRegionIdMap.values());
}
if (CollectionUtils.isEmpty(list)) {
log.info("数据为空");
return Collections.emptyList();

View File

@@ -1,10 +1,8 @@
package com.cool.store.service.impl;
import com.cool.store.dao.EnterpriseUserDAO;
import com.cool.store.dao.PosAndOrderInfoDAO;
import com.cool.store.dao.ShopInfoDAO;
import com.cool.store.dao.ShopStageInfoDAO;
import com.cool.store.dao.*;
import com.cool.store.entity.LineInfoDO;
import com.cool.store.entity.PosAndOrderInfoDO;
import com.cool.store.entity.ShopInfoDO;
import com.cool.store.entity.ShopStageInfoDO;
@@ -33,7 +31,8 @@ import java.util.Objects;
*/
@Service
public class PosAndOrderInfoServiceImpl implements PosAndOrderInfoService {
@Resource
private LineInfoDAO lineInfoDAO;
@Resource
private ShopInfoDAO shopInfoDAO;
@Resource
@@ -73,6 +72,7 @@ public class PosAndOrderInfoServiceImpl implements PosAndOrderInfoService {
PosAndOrderResponse response = new PosAndOrderResponse();
PosAndOrderInfoDO posAndOrderInfoDO = posAndOrderInfoDAO.selectOneByShopId(shopId, type);
ShopInfoDO shopInfo = shopInfoDAO.getShopInfo(shopId);
LineInfoDO lineInfoDO = lineInfoDAO.getLineInfo(shopInfo.getLineId());
if (Objects.nonNull(posAndOrderInfoDO)) {
response.setShopId(posAndOrderInfoDO.getShopId());
response.setAccount(posAndOrderInfoDO.getAccount());
@@ -83,7 +83,13 @@ public class PosAndOrderInfoServiceImpl implements PosAndOrderInfoService {
response.setCreateUser(enterpriseUserDAO.getUserName(posAndOrderInfoDO.getCreateUser()));
}
else{
response.setAccount(shopInfo.getShopCode());
if (type.equals(PosAndOrderEnum.POS.getCode())){
response.setAccount(lineInfoDO.getMobile());
}
if (type.equals(PosAndOrderEnum.XIN_FA_SYS.getCode())){
response.setAccount(shopInfo.getShopCode());
}
}
return response;
}

View File

@@ -125,7 +125,7 @@ public class SyncDataServiceImpl implements SyncDataService {
}
request.setFxyAccount(lineInfoDO.getMobile());
request.setXzgAccount(shopInfo.getShopCode());
request.setYlsAccount(shopInfo.getShopCode());
request.setYlsAccount("ZXA8_"+shopInfo.getShopCode());
request.setWqfAccount(shopInfo.getShopCode());
request.setDownstreamSystemShopName(shopInfo.getShopName());
if (DownSystemTypeEnum.XGJ.equals(systemType)) {

View File

@@ -1,5 +1,6 @@
package com.cool.store.controller.webb;
import com.alibaba.fastjson.JSONObject;
import com.cool.store.request.FranchiseReportRequest;
import com.cool.store.response.FranchiseReportResponse;
import com.cool.store.response.ResponseResult;
@@ -28,7 +29,7 @@ public class PCFranchiseReportController {
@RequestMapping("/getZxjpOpenShopReport")
@ApiOperation("正新鸡排开店")
public ResponseResult<List<FranchiseReportResponse>> getList(@RequestBody FranchiseReportRequest request) {
return ResponseResult.success( franchiseReportService.zxjpOpenShopReport(request));
}
public ResponseResult< List<FranchiseReportResponse>> getList(@RequestBody FranchiseReportRequest request) {
return ResponseResult.success( franchiseReportService.zxjpOpenShopReport(request));
}
}