Browse Source

网点区域

contract
Yen 2 years ago
parent
commit
286f9585d7
  1. 1
      src/main/java/com/qs/serve/modules/bms/controller/BmsRegion2Controller.java
  2. 17
      src/main/java/com/qs/serve/modules/bms/controller/BmsRegionController.java
  3. 1
      src/main/java/com/qs/serve/modules/bms/mapper/BmsChannelPointMapper.java
  4. 4
      src/main/java/com/qs/serve/modules/bms/service/BmsRegionService.java
  5. 14
      src/main/java/com/qs/serve/modules/bms/service/impl/BmsRegion2ServiceImpl.java
  6. 33
      src/main/java/com/qs/serve/modules/bms/service/impl/BmsRegionServiceImpl.java
  7. 14
      src/main/java/com/qs/serve/modules/his/service/HisUserChannelPointService.java
  8. 99
      src/main/java/com/qs/serve/modules/his/service/impl/HisUserChannelPointServiceImpl.java

1
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);
}

17
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();
}
/**
* 删除区域档案

1
src/main/java/com/qs/serve/modules/bms/mapper/BmsChannelPointMapper.java

@ -35,7 +35,6 @@ public interface BmsChannelPointMapper extends BaseMapper<BmsChannelPoint> {
@InterceptorIgnore(tenantLine = "1")
List<BmsUserPoint4VisitVo> selectUserPointList4Visit(@Param("query") BmsPointVisitSo param);
//List<BmsChannelPoint>
}

4
src/main/java/com/qs/serve/modules/bms/service/BmsRegionService.java

@ -18,14 +18,14 @@ public interface BmsRegionService extends IService<BmsRegion> {
List<BmsRegion> listChild(String pid);
List<BmsRegion> listChildRightLike(String parentIdPath);
List<BmsRegion> listChild(List<String> pids);
BmsRegion getByCode(String code);
BmsRegion getByName(String name,Integer level);
// void flushLevel(BmsRegion param);
void flushAllLevel(boolean batchUpdate);
boolean saveBmsRegion(BmsRegion param);

14
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<BmsRegion2Mapper,BmsRegio
private BmsRegionUserService bmsRegionUserService;
private SysUserService sysUserService;
private BmsChannelPointMapper bmsChannelPointMapper;
private HisUserChannelPointService hisUserChannelPointService;
@Override
public boolean saveBmsRegion2(BmsRegion2 param){
@ -48,8 +50,13 @@ public class BmsRegion2ServiceImpl extends ServiceImpl<BmsRegion2Mapper,BmsRegio
BmsRegion2 ori = this.getById(param.getId());
param = this.toSetLevel(param);
boolean b = updateById(param);
if(!ori.getName().equals(param.getName())) {
this.updatePathByPid(param.getId());
boolean changePid = !ori.getPid().equals(param.getPid());
if(!ori.getName().equals(param.getName())||changePid) {
BmsRegion2 parentRegion = this.updatePathByPid(param.getId());
if(changePid){
hisUserChannelPointService.removeRegion(1,ori.getPathIds());
hisUserChannelPointService.flushRegion(1,parentRegion.getPathIds());
}
}
return b;
}
@ -210,7 +217,7 @@ public class BmsRegion2ServiceImpl extends ServiceImpl<BmsRegion2Mapper,BmsRegio
return param;
}
private void updatePathByPid(String pid){
private BmsRegion2 updatePathByPid(String pid){
BmsRegion2 parRegion = this.getById(pid);
List<BmsRegion2> regionList = listChild(pid);
if(regionList.size()>0){
@ -228,6 +235,7 @@ public class BmsRegion2ServiceImpl extends ServiceImpl<BmsRegion2Mapper,BmsRegio
this.updatePathByPid(re.getId());
}
}
return parRegion;
}
}

33
src/main/java/com/qs/serve/modules/bms/service/impl/BmsRegionServiceImpl.java

@ -11,6 +11,7 @@ import com.qs.serve.modules.bms.mapper.BmsChannelPointMapper;
import com.qs.serve.modules.bms.mapper.BmsFactoryMapper;
import com.qs.serve.modules.bms.service.BmsFactoryService;
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;
@ -38,26 +39,30 @@ public class BmsRegionServiceImpl extends ServiceImpl<BmsRegionMapper,BmsRegion>
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<BmsFactory> 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<BmsRegionMapper,BmsRegion>
return this.list(lqw);
}
@Override
public List<BmsRegion> listChildRightLike(String parentIdPath) {
LambdaQueryWrapper<BmsRegion> lqw = new LambdaQueryWrapper<>();
lqw.likeRight(BmsRegion::getPathIds,parentIdPath);
return this.list(lqw);
}
@Override
public List<BmsRegion> listChild(List<String> pid) {
@ -140,7 +151,7 @@ public class BmsRegionServiceImpl extends ServiceImpl<BmsRegionMapper,BmsRegion>
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<BmsRegionMapper,BmsRegion>
param.setPathNames(param.getName());
}
return param;
// this.updateById(param);
}
@Override
@ -215,9 +225,9 @@ public class BmsRegionServiceImpl extends ServiceImpl<BmsRegionMapper,BmsRegion>
this.updateById(param);
}
private void updatePathByPid(String pid){
private BmsRegion updatePathByPid(String pid){
BmsRegion parRegion = this.getById(pid);
List<BmsRegion> regionList = listChild(pid);
List<BmsRegion> 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<BmsRegionMapper,BmsRegion>
this.updatePathByPid(re.getId());
}
}
return parRegion;
}
@Override

14
src/main/java/com/qs/serve/modules/his/service/HisUserChannelPointService.java

@ -42,5 +42,19 @@ public interface HisUserChannelPointService extends IService<HisUserChannelPoint
*/
void flushBatchUserRegion(List<String> userIds,List<Long> 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);
}

99
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<HisUserChannelPo
private final BmsRegionUserMapper regionUserMapper;
private final BmsMasterUserMapper masterUserMapper;
private final BmsChannelPointMapper channelPointMapper;
private final BmsRegionMapper regionMapper;
private final BmsRegion2Mapper region2Mapper;
@Override
public void removeByPointId(Long pointId) {
LambdaQueryWrapper<HisUserChannelPoint> lqw = new LambdaQueryWrapper<>();
@ -46,14 +50,7 @@ public class HisUserChannelPointServiceImpl extends ServiceImpl<HisUserChannelPo
this.removeByPointId(pointId);
List<HisUserChannelPoint> channelPointList = new ArrayList<>();
if(StringUtils.hasText(saleRegionIds)){
List<String> saleRegionArr = Arrays.asList(saleRegionIds.split("_"));
LambdaQueryWrapper<BmsRegionUser> lqw = new LambdaQueryWrapper<>();
lqw.in(BmsRegionUser::getRegionId,saleRegionArr);
lqw.eq(BmsRegionUser::getType,0);
lqw.select(BmsRegionUser::getUserId);
List<BmsRegionUser> regionUserList = regionUserMapper.selectList(lqw);
List<String> userIds = regionUserList.stream().map(BmsRegionUser::getUserId)
.distinct().collect(Collectors.toList());
List<String> 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<HisUserChannelPo
channelPointList.add(userChannelPoint);
}
}
if(StringUtils.hasText(bizRegionIds)){
List<String> bizRegionArr = Arrays.asList(bizRegionIds.split("_"));
LambdaQueryWrapper<BmsRegionUser> lqw = new LambdaQueryWrapper<>();
lqw.in(BmsRegionUser::getRegionId,bizRegionArr);
lqw.eq(BmsRegionUser::getType,1);
lqw.select(BmsRegionUser::getUserId);
List<BmsRegionUser> regionUserList = regionUserMapper.selectList(lqw);
List<String> userIds = regionUserList.stream().map(BmsRegionUser::getUserId)
.distinct().collect(Collectors.toList());
List<String> 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<HisUserChannelPo
@Override
public void flushBatchUserRegion(List<String> userIds, List<Long> pointIds, Integer sourceType, String regionIds) {
this.flushRegion(sourceType,regionIds,userIds,pointIds,true);
}
@Override
public void removeRegion(Integer sourceType, String regionIds) {
LambdaQueryWrapper<HisUserChannelPoint> 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<String> userIds = this.getUserIdByRegionIds(regionIds,sourceType.equals(2));
List<Long> 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<String> userIds, List<Long> pointIds,boolean delHisUserRegion) {
List<HisUserChannelPoint> hisUserChannelPointList = new ArrayList<>();
for (String userId : userIds) {
if(sourceType.equals(2)){
@ -144,5 +161,45 @@ public class HisUserChannelPointServiceImpl extends ServiceImpl<HisUserChannelPo
}
/**
* 获取区域负责的用户ID
* @param regionIds
* @param isSaleRegion
* @return
*/
private List<String> getUserIdByRegionIds(String regionIds,boolean isSaleRegion){
List<String> regionArr = Arrays.asList(regionIds.split("_"));
LambdaQueryWrapper<BmsRegionUser> lqw = new LambdaQueryWrapper<>();
lqw.in(BmsRegionUser::getRegionId,regionArr);
lqw.eq(BmsRegionUser::getType,isSaleRegion?0:1);
lqw.select(BmsRegionUser::getUserId);
List<BmsRegionUser> regionUserList = regionUserMapper.selectList(lqw);
List<String> userIds = regionUserList.stream().map(BmsRegionUser::getUserId)
.distinct().collect(Collectors.toList());
return userIds;
}
/**
* 获取区域有那些网点
* @param regionIds
* @param isSaleRegion
* @return
*/
private List<Long> getPointIdsByRegionIds(String regionIds,boolean isSaleRegion){
if(isSaleRegion){
LambdaQueryWrapper<BmsChannelPoint> lqw = new LambdaQueryWrapper<>();
lqw.likeRight(BmsChannelPoint::getSaleRegionPathIds,regionIds);
lqw.select(BmsChannelPoint::getId);
List<BmsChannelPoint> channelPoints = channelPointMapper.selectList(lqw);
return channelPoints.stream().map(BmsChannelPoint::getId).collect(Collectors.toList());
}else {
LambdaQueryWrapper<BmsChannelPoint> lqw = new LambdaQueryWrapper<>();
lqw.likeRight(BmsChannelPoint::getBizRegionPathIds,regionIds);
lqw.select(BmsChannelPoint::getId);
List<BmsChannelPoint> channelPoints = channelPointMapper.selectList(lqw);
return channelPoints.stream().map(BmsChannelPoint::getId).collect(Collectors.toList());
}
}
}

Loading…
Cancel
Save