|
@ -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; |
|
|
} |
|
|
} |
|
|