Browse Source

修复销售人员链

contract
15989082884@163.com 2 years ago
parent
commit
7531f91511
  1. 64
      src/main/java/com/qs/serve/modules/sys/controller/SysUserController.java
  2. 21
      src/main/java/com/qs/serve/modules/sys/service/impl/SysUserSalesServiceImpl.java

64
src/main/java/com/qs/serve/modules/sys/controller/SysUserController.java

@ -8,6 +8,7 @@ import com.qs.serve.common.model.annotation.SysLog;
import com.qs.serve.common.model.consts.GySysConst; import com.qs.serve.common.model.consts.GySysConst;
import com.qs.serve.common.model.dto.PageVo; import com.qs.serve.common.model.dto.PageVo;
import com.qs.serve.common.model.dto.R; import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.model.dto.TreeNode;
import com.qs.serve.common.model.enums.BizType; import com.qs.serve.common.model.enums.BizType;
import com.qs.serve.common.util.*; import com.qs.serve.common.util.*;
import com.qs.serve.modules.sys.entity.*; import com.qs.serve.modules.sys.entity.*;
@ -317,6 +318,41 @@ public class SysUserController {
return R.ok(); return R.ok();
} }
/**
* 用户path_ids初始化
* @return
*/
@SysLog(title = "人员",desc = "用户path_ids初始化",biz = BizType.UPDATE)
@PostMapping("/initSalesParentPathIds")
@PreAuthorize("hasRole('sys:user:update')")
@Transactional(rollbackFor = Exception.class)
public R<?> updateSalesParent(){
LambdaQueryWrapper<SysUserSales> lqwSale = new LambdaQueryWrapper<>();
lqwSale.eq(SysUserSales::getPid,"0");
List<SysUserSales> userSales = sysUserSalesService.list(lqwSale);
userSales.forEach(a->{
a.setPathIds("0_"+a.getUserId());
});
sysUserSalesService.updateBatchById(userSales);
initPath(userSales);
return R.ok();
}
private void initPath(List<SysUserSales> pSales){
pSales.forEach(p->{
LambdaQueryWrapper<SysUserSales> lqwSale = new LambdaQueryWrapper<>();
lqwSale.eq(SysUserSales::getPid,p.getUserId());
List<SysUserSales> userSales = sysUserSalesService.list(lqwSale);
userSales.forEach(a->{
a.setPathIds(p.getPathIds()+"_"+a.getUserId());
});
sysUserSalesService.updateBatchById(userSales);
initPath(userSales);
});
}
/** /**
* 修改销售人员上下级 * 修改销售人员上下级
* @param userBo * @param userBo
@ -341,6 +377,7 @@ public class SysUserController {
} }
List<SysUserSales> updateAllList = new ArrayList<>(); List<SysUserSales> updateAllList = new ArrayList<>();
if(pid.equals("0")){ if(pid.equals("0")){
//清除父级,还原回一级
List<SysUserSales> sysUserSales = sysUserSalesService.listByIds(userBo.getUserIds()); List<SysUserSales> sysUserSales = sysUserSalesService.listByIds(userBo.getUserIds());
List<SysUserSales> updateList = this.updateSalesLevel(pid, "0", sysUserSales); List<SysUserSales> updateList = this.updateSalesLevel(pid, "0", sysUserSales);
updateAllList.addAll(updateList); updateAllList.addAll(updateList);
@ -362,31 +399,30 @@ public class SysUserController {
* @return * @return
*/ */
private List<SysUserSales> updateSalesLevel(String pid,String newPrefixPath,List<SysUserSales> sysUserSales) { private List<SysUserSales> updateSalesLevel(String pid,String newPrefixPath,List<SysUserSales> sysUserSales) {
List<SysUserSales> updateList = new ArrayList<>(); List<SysUserSales> updateList = new ArrayList<>();
for (SysUserSales userSale : sysUserSales) { for (SysUserSales userSale : sysUserSales) {
if(newPrefixPath.contains("_"+userSale.getUserId())){
Assert.throwEx("不能选择该人员,上下级死循环");
}
String pathIds = userSale.getPathIds(); String pathIds = userSale.getPathIds();
String oldPrefixPath = pathIds.substring(0,pathIds.lastIndexOf(userSale.getUserId())-1);
userSale.setPathIds(newPrefixPath+"_"+userSale.getUserId()); userSale.setPathIds(newPrefixPath+"_"+userSale.getUserId());
userSale.setPid(pid); userSale.setPid(pid);
updateList.add(userSale); updateList.add(userSale);
//更新子节点 //更新子节点
List<SysUserSales> childList = sysUserSalesService.listByPathId(pathIds); if(pathIds.lastIndexOf(userSale.getUserId())<0){
return updateList;
}
String oldPrefixPath = pathIds.substring(0,pathIds.lastIndexOf("_"+userSale.getUserId())-1);
log.info(oldPrefixPath);
List<SysUserSales> childList = sysUserSalesService.listByPathId(pathIds);
for (SysUserSales childNode : childList) { for (SysUserSales childNode : childList) {
String childPathIds = newPrefixPath + childNode.getPathIds().replace(oldPrefixPath,""); String childPathIds = newPrefixPath + childNode.getPathIds().replace(oldPrefixPath, "");
String[] arr = childPathIds.split("_");
Set<String> setStr = new HashSet<>();
for (String strv : arr) {
setStr.add(strv);
}
if(userSale.getUserId().equals(childNode.getUserId())){
continue;
}
if(setStr.size()<arr.length){
Assert.throwEx("出现递归节点");
}
childNode.setPathIds(childPathIds); childNode.setPathIds(childPathIds);
updateList.add(childNode); updateList.add(childNode);
} }
} }
return updateList; return updateList;
} }

21
src/main/java/com/qs/serve/modules/sys/service/impl/SysUserSalesServiceImpl.java

@ -39,18 +39,19 @@ public class SysUserSalesServiceImpl extends ServiceImpl<SysUserSalesMapper,SysU
} }
LambdaQueryWrapper<SysUserSales> lqw = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SysUserSales> lqw = new LambdaQueryWrapper<>();
lqw.likeRight(SysUserSales::getPathIds,pathId); lqw.likeRight(SysUserSales::getPathIds,pathId);
lqw.ne(SysUserSales::getPathIds,pathId);
List<SysUserSales> list = this.list(lqw); List<SysUserSales> list = this.list(lqw);
List<SysUserSales> result = new ArrayList<>(); // List<SysUserSales> result = new ArrayList<>();
//过滤数值类型脏数据 //过滤数值类型脏数据
for (SysUserSales userSales : list) { // for (SysUserSales userSales : list) {
String[] arr = userSales.getPathIds().split("_"); // String[] arr = userSales.getPathIds().split("_");
String lastId = arr[arr.length-1]; // String lastId = arr[arr.length-1];
if(!lastId.equals(userSales.getUserId())){ // if(!lastId.equals(userSales.getUserId())){
continue; // continue;
} // }
result.add(userSales); // result.add(userSales);
} // }
return result; return list;
} }
@Override @Override

Loading…
Cancel
Save