diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsRegion2Controller.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsRegion2Controller.java index e49fe41c..6da09d1b 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/BmsRegion2Controller.java +++ b/src/main/java/com/qs/serve/modules/bms/controller/BmsRegion2Controller.java @@ -229,6 +229,7 @@ public class BmsRegion2Controller { BmsRegion2 param = new BmsRegion2(); param.setId(regionBo.getId()); param.setName(regionBo.getName()); + param.setPid(regionBo.getPid()); boolean result = bmsRegion2Service.updateBmsRegion2ById(param); return R.isTrue(result); } diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsRegionController.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsRegionController.java index bc221ee2..1f8ae88c 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/BmsRegionController.java +++ b/src/main/java/com/qs/serve/modules/bms/controller/BmsRegionController.java @@ -233,7 +233,7 @@ public class BmsRegionController { } /** - * 更新(只允许改名称) + * 更新 * @param regionBo * @return */ @@ -244,8 +244,8 @@ public class BmsRegionController { BmsRegion param = new BmsRegion(); param.setId(regionBo.getId()); param.setName(regionBo.getName()); + param.setPid(regionBo.getPid()); boolean result = bmsRegionService.updateBmsRegionById(param); -// bmsRegionService.flushLevel(param); return R.isTrue(result); } @@ -279,7 +279,6 @@ public class BmsRegionController { param.setId(IdUtil.getSnowFlakeId()+""); } boolean result = bmsRegionService.saveBmsRegion(param); -// bmsRegionService.flushLevel(param); return R.isTrue(result); } @@ -288,7 +287,7 @@ public class BmsRegionController { * @param regionBo * @return */ - @PostMapping("/editBatch") + //@PostMapping("/editBatch") @SysLog(module = SystemModule.BASE, title = "区域档案", biz = BizType.INSERT) @PreAuthorize("hasRole('bms:region:insert')") public R editBatch(@RequestBody @Valid BmsRegionBatchBo regionBo){ @@ -311,16 +310,6 @@ public class BmsRegionController { return R.ok(); } - /** - * 【dev】测试接口,更新祖级数据 - * @return - */ - @LimitSubmit(interval = 15000) - @GetMapping("/updateLevelDev") - public R editBatch(){ - bmsRegionService.flushAllLevel(true); - return R.ok(); - } /** * 删除区域档案 diff --git a/src/main/java/com/qs/serve/modules/bms/mapper/BmsChannelPointMapper.java b/src/main/java/com/qs/serve/modules/bms/mapper/BmsChannelPointMapper.java index c1136ed5..db463158 100644 --- a/src/main/java/com/qs/serve/modules/bms/mapper/BmsChannelPointMapper.java +++ b/src/main/java/com/qs/serve/modules/bms/mapper/BmsChannelPointMapper.java @@ -35,7 +35,6 @@ public interface BmsChannelPointMapper extends BaseMapper { @InterceptorIgnore(tenantLine = "1") List selectUserPointList4Visit(@Param("query") BmsPointVisitSo param); - //List } diff --git a/src/main/java/com/qs/serve/modules/bms/service/BmsRegionService.java b/src/main/java/com/qs/serve/modules/bms/service/BmsRegionService.java index 58636adf..6a6d95d3 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/BmsRegionService.java +++ b/src/main/java/com/qs/serve/modules/bms/service/BmsRegionService.java @@ -18,14 +18,14 @@ public interface BmsRegionService extends IService { List listChild(String pid); + List listChildRightLike(String parentIdPath); + List listChild(List pids); BmsRegion getByCode(String code); BmsRegion getByName(String name,Integer level); -// void flushLevel(BmsRegion param); - void flushAllLevel(boolean batchUpdate); boolean saveBmsRegion(BmsRegion param); diff --git a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsRegion2ServiceImpl.java b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsRegion2ServiceImpl.java index bb86e5f9..aa07b0b2 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsRegion2ServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsRegion2ServiceImpl.java @@ -12,6 +12,7 @@ import com.qs.serve.modules.bms.mapper.BmsChannelPointMapper; import com.qs.serve.modules.bms.mapper.BmsRegion2Mapper; import com.qs.serve.modules.bms.service.BmsRegion2Service; import com.qs.serve.modules.bms.service.BmsRegionUserService; +import com.qs.serve.modules.his.service.HisUserChannelPointService; import com.qs.serve.modules.sys.entity.SysUser; import com.qs.serve.modules.sys.service.SysUserService; import lombok.AllArgsConstructor; @@ -36,6 +37,7 @@ public class BmsRegion2ServiceImpl extends ServiceImpl regionList = listChild(pid); if(regionList.size()>0){ @@ -228,6 +235,7 @@ public class BmsRegion2ServiceImpl extends ServiceImpl private SysUserService sysUserService; private BmsChannelPointMapper bmsChannelPointMapper; private BmsFactoryService bmsFactoryService; + private HisUserChannelPointService hisUserChannelPointService; @Override public boolean saveBmsRegion(BmsRegion param){ - param = this.flushLevel(param); - + param = this.flushSetLevel(param); LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.orderByAsc(BmsFactory::getCode); String[] FactoryIds = bmsFactoryService.list(lqw).stream().map(a->a.getId()).toArray(String[]::new); - param.setFactoryIds(FactoryIds); return this.save(param); } @Override public boolean updateBmsRegionById(BmsRegion param){ - BmsRegion ori = this.getById(param.getId()); - param = this.flushLevel(param); + param = this.flushSetLevel(param); boolean b = this.updateById(param); - if(!ori.getName().equals(param.getName())) { - this.updatePathByPid(param.getId()); + BmsRegion ori = this.getById(param.getId()); + boolean changePid = !ori.getPid().equals(param.getPid()); + if(!ori.getName().equals(param.getName())||changePid) { + BmsRegion parentRegion = this.updatePathByPid(param.getId()); + if(changePid){ + hisUserChannelPointService.removeRegion(2,ori.getPathIds()); + hisUserChannelPointService.flushRegion(2,parentRegion.getPathIds()); + } } return b; } @@ -115,6 +120,12 @@ public class BmsRegionServiceImpl extends ServiceImpl return this.list(lqw); } + @Override + public List listChildRightLike(String parentIdPath) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.likeRight(BmsRegion::getPathIds,parentIdPath); + return this.list(lqw); + } @Override public List listChild(List pid) { @@ -140,7 +151,7 @@ public class BmsRegionServiceImpl extends ServiceImpl return this.getOne(lqw,true); } - public BmsRegion flushLevel(BmsRegion param) { + public BmsRegion flushSetLevel(BmsRegion param) { if(StringUtils.hasText(param.getPid()) && !param.getPid().equals("0") ){ BmsRegion parent = this.getById(param.getPid()); if(parent!=null){ @@ -160,7 +171,6 @@ public class BmsRegionServiceImpl extends ServiceImpl param.setPathNames(param.getName()); } return param; -// this.updateById(param); } @Override @@ -215,9 +225,9 @@ public class BmsRegionServiceImpl extends ServiceImpl this.updateById(param); } - private void updatePathByPid(String pid){ + private BmsRegion updatePathByPid(String pid){ BmsRegion parRegion = this.getById(pid); - List regionList = listChild(pid); + List regionList = this.listChild(pid); if(regionList.size()>0){ regionList = regionList.stream().map(a->{ a.setPathIds(parRegion.getPathIds()+"_"+a.getId()); @@ -233,6 +243,7 @@ public class BmsRegionServiceImpl extends ServiceImpl this.updatePathByPid(re.getId()); } } + return parRegion; } @Override diff --git a/src/main/java/com/qs/serve/modules/his/service/HisUserChannelPointService.java b/src/main/java/com/qs/serve/modules/his/service/HisUserChannelPointService.java index 662638e2..1870a492 100644 --- a/src/main/java/com/qs/serve/modules/his/service/HisUserChannelPointService.java +++ b/src/main/java/com/qs/serve/modules/his/service/HisUserChannelPointService.java @@ -42,5 +42,19 @@ public interface HisUserChannelPointService extends IService userIds,List pointIds,Integer sourceType,String regionIds); + /** + * 删除区域相关 + * @param sourceType + * @param regionIds + */ + void removeRegion(Integer sourceType,String regionIds); + + /** + * 更新区域信息 + * @param sourceType + * @param regionIds + */ + void flushRegion(Integer sourceType,String regionIds); + } diff --git a/src/main/java/com/qs/serve/modules/his/service/impl/HisUserChannelPointServiceImpl.java b/src/main/java/com/qs/serve/modules/his/service/impl/HisUserChannelPointServiceImpl.java index a1c77f37..4a706100 100644 --- a/src/main/java/com/qs/serve/modules/his/service/impl/HisUserChannelPointServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/his/service/impl/HisUserChannelPointServiceImpl.java @@ -5,10 +5,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.qs.serve.common.util.CollectionUtil; import com.qs.serve.common.util.StringUtils; import com.qs.serve.modules.bms.common.MasterUserType; -import com.qs.serve.modules.bms.entity.BmsMasterUser; -import com.qs.serve.modules.bms.entity.BmsRegionUser; -import com.qs.serve.modules.bms.mapper.BmsMasterUserMapper; -import com.qs.serve.modules.bms.mapper.BmsRegionUserMapper; +import com.qs.serve.modules.bms.entity.*; +import com.qs.serve.modules.bms.mapper.*; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -34,6 +32,12 @@ public class HisUserChannelPointServiceImpl extends ServiceImpl lqw = new LambdaQueryWrapper<>(); @@ -46,14 +50,7 @@ public class HisUserChannelPointServiceImpl extends ServiceImpl channelPointList = new ArrayList<>(); if(StringUtils.hasText(saleRegionIds)){ - List saleRegionArr = Arrays.asList(saleRegionIds.split("_")); - LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); - lqw.in(BmsRegionUser::getRegionId,saleRegionArr); - lqw.eq(BmsRegionUser::getType,0); - lqw.select(BmsRegionUser::getUserId); - List regionUserList = regionUserMapper.selectList(lqw); - List userIds = regionUserList.stream().map(BmsRegionUser::getUserId) - .distinct().collect(Collectors.toList()); + List userIds = this.getUserIdByRegionIds(saleRegionIds,true); for (String userId : userIds) { HisUserChannelPoint userChannelPoint = new HisUserChannelPoint(); userChannelPoint.setUserId(userId); @@ -63,16 +60,8 @@ public class HisUserChannelPointServiceImpl extends ServiceImpl bizRegionArr = Arrays.asList(bizRegionIds.split("_")); - LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); - lqw.in(BmsRegionUser::getRegionId,bizRegionArr); - lqw.eq(BmsRegionUser::getType,1); - lqw.select(BmsRegionUser::getUserId); - List regionUserList = regionUserMapper.selectList(lqw); - List userIds = regionUserList.stream().map(BmsRegionUser::getUserId) - .distinct().collect(Collectors.toList()); + List userIds = this.getUserIdByRegionIds(bizRegionIds,false); for (String userId : userIds) { HisUserChannelPoint userChannelPoint = new HisUserChannelPoint(); userChannelPoint.setUserId(userId); @@ -122,6 +111,34 @@ public class HisUserChannelPointServiceImpl extends ServiceImpl userIds, List pointIds, Integer sourceType, String regionIds) { + this.flushRegion(sourceType,regionIds,userIds,pointIds,true); + } + + @Override + public void removeRegion(Integer sourceType, String regionIds) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.likeRight(HisUserChannelPoint::getSourceIds,regionIds); + lqw.eq(HisUserChannelPoint::getSourceType,sourceType); + this.remove(lqw); + } + + @Override + public void flushRegion(Integer sourceType, String regionIds) { + this.removeRegion(sourceType,regionIds); + List userIds = this.getUserIdByRegionIds(regionIds,sourceType.equals(2)); + List pointIds = this.getPointIdsByRegionIds(regionIds,sourceType.equals(2)); + this.flushRegion(sourceType, regionIds, userIds, pointIds,false); + } + + /** + * 基础的更新区域 + * @param sourceType + * @param regionIds + * @param userIds + * @param pointIds + * @param delHisUserRegion + */ + private void flushRegion(Integer sourceType, String regionIds, List userIds, List pointIds,boolean delHisUserRegion) { List hisUserChannelPointList = new ArrayList<>(); for (String userId : userIds) { if(sourceType.equals(2)){ @@ -144,5 +161,45 @@ public class HisUserChannelPointServiceImpl extends ServiceImpl getUserIdByRegionIds(String regionIds,boolean isSaleRegion){ + List regionArr = Arrays.asList(regionIds.split("_")); + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.in(BmsRegionUser::getRegionId,regionArr); + lqw.eq(BmsRegionUser::getType,isSaleRegion?0:1); + lqw.select(BmsRegionUser::getUserId); + List regionUserList = regionUserMapper.selectList(lqw); + List userIds = regionUserList.stream().map(BmsRegionUser::getUserId) + .distinct().collect(Collectors.toList()); + return userIds; + } + + /** + * 获取区域有那些网点 + * @param regionIds + * @param isSaleRegion + * @return + */ + private List getPointIdsByRegionIds(String regionIds,boolean isSaleRegion){ + if(isSaleRegion){ + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.likeRight(BmsChannelPoint::getSaleRegionPathIds,regionIds); + lqw.select(BmsChannelPoint::getId); + List channelPoints = channelPointMapper.selectList(lqw); + return channelPoints.stream().map(BmsChannelPoint::getId).collect(Collectors.toList()); + }else { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.likeRight(BmsChannelPoint::getBizRegionPathIds,regionIds); + lqw.select(BmsChannelPoint::getId); + List channelPoints = channelPointMapper.selectList(lqw); + return channelPoints.stream().map(BmsChannelPoint::getId).collect(Collectors.toList()); + } + } + }