diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/BigRegionDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/BigRegionDAO.java index 5a681ab1f..c27e91f2a 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/dao/BigRegionDAO.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/BigRegionDAO.java @@ -65,4 +65,13 @@ public class BigRegionDAO { return bigRegionMapper.queryBigRegion(queryBigRegionRequest); } + public BigRegionDO getByRegionId(Long regionId){ + if (regionId==null){ + throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED); + } + Example example = new Example(BigRegionDO.class); + example.createCriteria().andEqualTo("regionId", regionId).andEqualTo("joinMode",0); + return bigRegionMapper.selectOneByExample(example); + } + } diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/RegionDao.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/RegionDao.java index 927ec964e..1deeeb750 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/dao/RegionDao.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/RegionDao.java @@ -10,6 +10,7 @@ import com.google.common.collect.Maps; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.ListUtils; import org.springframework.stereotype.Repository; +import tk.mybatis.mapper.entity.Example; import javax.annotation.Resource; import java.util.Collections; @@ -201,4 +202,12 @@ public class RegionDao { } return regionMapper.getRegionByNameListAndIsPath(name); } + + + public List getSubRegionByParentIdsAndRegionType (List parentIdList, String regionType){ + if (CollectionUtils.isEmpty(parentIdList)|| StringUtils.isBlank(regionType)){ + return Lists.newArrayList(); + } + return regionMapper.getSubRegionByParentIdsAndRegionType(parentIdList, regionType); + } } diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/RegionMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/RegionMapper.java index 16a7fa9ba..bfb43b03f 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/RegionMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/RegionMapper.java @@ -115,4 +115,7 @@ public interface RegionMapper { List getSubRegionByParentIdAndRegionType( @Param("regionId")Long regionId, @Param("regionType")String regionType); List getRegionByNameListAndIsPath(@Param("regionNameList") List regionNameList); + + + List getSubRegionByParentIdsAndRegionType( @Param("parentIds")List parentIds, @Param("regionType")String regionType); } diff --git a/coolstore-partner-dao/src/main/resources/mapper/BigRegionMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/BigRegionMapper.xml index abf4a1647..20bcfaacd 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/BigRegionMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/BigRegionMapper.xml @@ -15,6 +15,7 @@ + diff --git a/coolstore-partner-dao/src/main/resources/mapper/RegionMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/RegionMapper.xml index 090772454..ec845c63f 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/RegionMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/RegionMapper.xml @@ -439,6 +439,15 @@ and region_type = 'path' + \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/region/BigRegionDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/region/BigRegionDTO.java index 3a3b05c26..1db2dd7ff 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/dto/region/BigRegionDTO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/region/BigRegionDTO.java @@ -14,4 +14,6 @@ public class BigRegionDTO { private String regionName; + private String groupName; + private Long storeManageRegionId; } diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/BigRegionDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/BigRegionDO.java index d8cdf1d46..3f21fcaf7 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/entity/BigRegionDO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/BigRegionDO.java @@ -60,6 +60,17 @@ public class BigRegionDO { //集团名称 @Column(name = "group_name") private String groupName; + //区域对应的管理区域 + @Column(name = "store_manage_region_id") + private Long storeManageRegionId; + + public Long getStoreManageRegionId() { + return storeManageRegionId; + } + + public void setStoreManageRegionId(Long storeManageRegionId) { + this.storeManageRegionId = storeManageRegionId; + } public String getGroupName() { return groupName; diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/RegionService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/RegionService.java index 5b03d2631..693dc9e9e 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/RegionService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/RegionService.java @@ -44,7 +44,7 @@ public interface RegionService { /** * @Auther: wangshuo * @Date: 2025/7/11 - * @description:获取某区域下的所有子区域 + * @description:获取管理区域下的所有子区域(门店-大区,加盟分部) */ List getSubRegionByParentId(Long regionId); diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/DataHandlerServerImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/DataHandlerServerImpl.java index d7f1b2e8d..40ae18a87 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/DataHandlerServerImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/DataHandlerServerImpl.java @@ -7,6 +7,7 @@ import com.cool.store.context.CurrentUserHolder; import com.cool.store.context.LoginUserInfo; import com.cool.store.dao.*; import com.cool.store.dto.*; +import com.cool.store.dto.region.BigRegionDTO; import com.cool.store.entity.*; import com.cool.store.enums.*; import com.cool.store.enums.point.PayBusinessTypeEnum; @@ -15,6 +16,7 @@ import com.cool.store.enums.point.ShopSubStageEnum; import com.cool.store.enums.point.ShopSubStageStatusEnum; import com.cool.store.exception.ServiceException; import com.cool.store.mapper.*; +import com.cool.store.request.QueryBigRegionRequest; import com.cool.store.service.*; import com.cool.store.utils.StringUtil; import com.cool.store.utils.easyExcel.EasyExcelUtil; @@ -47,6 +49,10 @@ import static com.cool.store.utils.poi.DateUtils.YYYY_MM_DD; @Service @Slf4j public class DataHandlerServerImpl implements DataHandlerServer { + @Resource + private RegionMapper regionMapper; + @Resource + private BigRegionDAO bigRegionDAO; @Resource private RegionDao regionDao; @Resource @@ -1159,46 +1165,52 @@ public class DataHandlerServerImpl implements DataHandlerServer { shopInfoDO.setManagerRegionId(isCreateStoreDTO.getPid()); updateList.add(shopInfoDO); } + List bigRegionDTOS = bigRegionDAO.queryBigRegion(new QueryBigRegionRequest()); + Map bigRegionDTOMap = bigRegionDTOS.stream().collect(Collectors.toMap(BigRegionDTO::getRegionId, x -> x)); + //XX大区 + List storeManageIds = bigRegionDTOS.stream().filter(x -> x.getStoreManageRegionId() != null).map(BigRegionDTO::getStoreManageRegionId).collect(Collectors.toList()); + //加盟分部 + List branchStoreManageIds = bigRegionDTOS.stream().filter(x -> x.getStoreManageRegionId() == null).map(BigRegionDTO::getRegionId).collect(Collectors.toList()); + + //查询门店-XX大区下面的管理督导 + List manageRegionList = regionDao.getSubRegionByParentIdsAndRegionType(storeManageIds, "path"); + Map manageRegionMap = manageRegionList.stream().collect(Collectors.toMap(regionDO -> regionDO.getName(), Function.identity())); + //查询加盟分部下的管理督导 + List branchStoreManageList = regionDao.getSubRegionByParentIdsAndRegionType(branchStoreManageIds, "path"); + Map branchStoreManageMap = manageRegionList.stream().collect(Collectors.toMap(regionDO -> regionDO.getName(), Function.identity())); + List isShopIds = isCreateStore.stream().map(IsCreateStoreDTO::getShopId).collect(Collectors.toList()); //未建店 List shopInfoDOS = shopInfoDAO.selectByNotCreateStore(isShopIds); Set investUserIds = shopInfoDOS.stream().map(ShopInfoDO::getInvestmentManager).collect(Collectors.toSet()); Map userNameMap = enterpriseUserDAO.getUserNameMap(new ArrayList<>(investUserIds)); Set nameSet = userNameMap.keySet(); - - List regionDOList = regionDao.getRegionByNameListAndIsPath(new ArrayList<>(nameSet)); - Set parentIdSet = new HashSet<>(); - regionDOList.forEach(regionDO -> parentIdSet.add(Long.valueOf(regionDO.getParentId()))); - Map parentRegionNameMap = regionDao.getRegionNameMap(new ArrayList<>(parentIdSet)); - - Map shopRegionNameMap = regionDao.getRegionNameMap(new ArrayList<>(shopInfoDOS.stream().map(ShopInfoDO::getRegionId).collect(Collectors.toSet()))); List errorList = new ArrayList<>(); - Map> regionName = regionDOList.stream().collect(Collectors.groupingBy(RegionDO::getName)); for (ShopInfoDO shopInfoDO : shopInfoDOS){ String name = userNameMap.getOrDefault(shopInfoDO.getInvestmentManager(),""); if (StringUtils.isBlank(name)){ log.info("门店招商经理未找到 shopId:{}",shopInfoDO.getId()); ImportOaOldShopDataErrorDTO errorDTO = new ImportOaOldShopDataErrorDTO(shopInfoDO.getShopCode(), "门店招商经理未找到"); + errorList.add(errorDTO); continue; } - List regionList = regionName.getOrDefault(name, new ArrayList<>()); - if (CollectionUtils.isEmpty(regionList)){ + BigRegionDTO bigRegionDTO = bigRegionDTOMap.get(shopInfoDO.getId()); + RegionDO regionDO; + if (bigRegionDTO.getStoreManageRegionId()==null){ + regionDO = manageRegionMap.get(name); + }else{ + regionDO= branchStoreManageMap.get(name); + } + if (Objects.isNull(regionDO)){ log.info("门店所属管理区域未找到 shopId:{}",shopInfoDO.getId()); ImportOaOldShopDataErrorDTO errorDTO = new ImportOaOldShopDataErrorDTO(shopInfoDO.getShopCode(), "门店所属管理区域未找到"); + errorList.add(errorDTO); continue; } - for (RegionDO regionDO : regionList){ - String parentRegionNameMapOrDefault = parentRegionNameMap.getOrDefault(Long.valueOf(regionDO.getParentId()), ""); - String shopRegionName = shopRegionNameMap.getOrDefault(regionDO.getId(), ""); - if (StringUtils.isNotBlank(parentRegionNameMapOrDefault)&&StringUtils.isNotBlank(shopRegionName) - &&(parentRegionNameMapOrDefault.equals("门店"+shopRegionName)||parentRegionNameMapOrDefault.equals(shopRegionName))){ - shopInfoDO.setManagerRegionId(regionDO.getId()); - updateList.add(shopInfoDO); - break; - } - } + shopInfoDO.setManagerRegionId(regionDO.getId()); + updateList.add(shopInfoDO); } shopInfoDAO.updateManagerRegionId(updateList); if (CollectionUtils.isNotEmpty(errorList)) { diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/RegionServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/RegionServiceImpl.java index 796abbe6c..083a3c0df 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/RegionServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/RegionServiceImpl.java @@ -3,8 +3,10 @@ package com.cool.store.service.impl; import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSONObject; import com.cool.store.constants.CommonConstants; +import com.cool.store.dao.BigRegionDAO; import com.cool.store.dao.RegionAreaConfigDao; import com.cool.store.dao.RegionDao; +import com.cool.store.entity.BigRegionDO; import com.cool.store.entity.RegionDO; import com.cool.store.enums.ErrorCodeEnum; import com.cool.store.enums.ThirdRegionTypeEnum; @@ -49,6 +51,8 @@ public class RegionServiceImpl implements RegionService { @Resource private RegionAreaConfigDao regionAreaConfigDao; + @Resource + private BigRegionDAO bigRegionDAO; @Override public RegionPathNameVO getAllRegionName(Long regionId) { @@ -165,6 +169,11 @@ public class RegionServiceImpl implements RegionService { if (Objects.isNull(regionId)){ return Lists.newArrayList(); } + BigRegionDO byRegionId = bigRegionDAO.getByRegionId(regionId); + if (byRegionId.getRegionName().endsWith("大区")){ + //找门店-XX大区 + regionId = byRegionId.getStoreManageRegionId() ; + } return regionMapper.getSubRegionByParentIdAndRegionType(regionId,"path"); } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/SyncMainSysServerImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/SyncMainSysServerImpl.java index 6a1c88fc1..b26818dfd 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/SyncMainSysServerImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/SyncMainSysServerImpl.java @@ -36,6 +36,8 @@ import static com.cool.store.enums.ExtendFieldTypeEnum.*; @Service @Slf4j public class SyncMainSysServerImpl implements SyncMainSysServer { + @Resource + private BigRegionDAO bigRegionDAO; @Value("${spring.profiles.active}") private String active; @Resource @@ -85,7 +87,17 @@ public class SyncMainSysServerImpl implements SyncMainSysServer { requestBody.setLocation_address(shopInfo.getDetailAddress()); requestBody.setStore_address(shopInfo.getDetailAddress()); //todo 等待王硕确认 - requestBody.setStore_area(shopInfo.getManagerRegionId().toString()); + if (shopInfo.getManagerRegionId() == null) { + BigRegionDO byRegionId = bigRegionDAO.getByRegionId(shopInfo.getRegionId()); + if (byRegionId != null){ + requestBody.setStore_area(byRegionId.getStoreManageRegionId() == null + ? shopInfo.getRegionId().toString() : shopInfo.getManagerRegionId().toString()); + }else{ + requestBody.setStore_area(shopInfo.getRegionId().toString()); + } + } else { + requestBody.setStore_area(shopInfo.getManagerRegionId().toString()); + } //未开业 requestBody.setStore_status("not_open"); requestBody.setStore_acreage(pointInfoDO.getPointArea()); @@ -106,7 +118,7 @@ public class SyncMainSysServerImpl implements SyncMainSysServer { } Map configMapByActive = ExtendFieldTypeEnum.getConfigMapByActive(active); Map extendField = new HashMap<>(); - extendField.put(configMapByActive.get(ONLINE_STORE_MANAGER_MOBILE.getMsg()).getKey(),""); + extendField.put(configMapByActive.get(ONLINE_STORE_MANAGER_MOBILE.getMsg()).getKey(), ""); extendField.put(configMapByActive.get(ONLINE_SIGNATORY_NAME_1.getMsg()).getKey(), signFranchiseDO.getPartnershipSignatoryFirst()); extendField.put(configMapByActive.get(ONLINE_SIGNATORY_MOBILE_1.getMsg()).getKey(), lineInfoDO.getMobile()); extendField.put(configMapByActive.get(ONLINE_SIGNATORY_NAME_2.getMsg()).getKey(), signFranchiseDO.getPartnershipSignatorySecond()); diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/RegionController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/RegionController.java index 8d91dd761..20bf15e42 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/RegionController.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/RegionController.java @@ -47,7 +47,7 @@ public class RegionController { return ResponseResult.success(regionService.getBelongWarRegionName(regionId)); } - @ApiOperation("获取下级区域") + @ApiOperation("获取管理下级区域") @GetMapping("/getSubRegionByParentId") public ResponseResult> getSubRegionByParentId(@RequestParam(value = "regionId", required = true) Long regionId) { return ResponseResult.success(regionService.getSubRegionByParentId(regionId));