From b6fa58652c12f0c61409cc44dfd8ad78f821b6c6 Mon Sep 17 00:00:00 2001
From: liyj <1003249715@qq.com>
Date: Wed, 11 Sep 2024 01:19:25 +0800
Subject: [PATCH] 1、流程bug修复
---
dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtDeptService.java | 105 +++++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 98 insertions(+), 7 deletions(-)
diff --git a/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtDeptService.java b/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtDeptService.java
index a563ef1..dcda728 100644
--- a/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtDeptService.java
+++ b/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtDeptService.java
@@ -3,20 +3,25 @@
import cn.huge.base.common.exception.ServiceException;
import cn.huge.base.common.utils.DateUtils;
import cn.huge.base.common.utils.IdUtils;
+import cn.huge.base.common.utils.ReturnFailUtils;
import cn.huge.module.client.api.impl.UtilsClientImpl;
+import cn.huge.module.constant.BaseConsts;
import cn.huge.module.ctuser.dao.mapper.CtDeptMapper;
import cn.huge.module.ctuser.domain.po.CtDept;
+import cn.huge.module.ctuser.domain.po.CtUser;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.PageRequest;
import org.springframework.transaction.annotation.Transactional;
-import javax.annotation.PostConstruct;
+import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
@@ -39,6 +44,9 @@
@Autowired
private UtilsClientImpl utilsClient;
+
+ @Autowired
+ private CtUserService ctUserService;
/**
* 更新对象
@@ -111,21 +119,104 @@
}
/**
- * 新增或更新对象
- * @param ctDept 实体对象
- */
- public void saveCtDept(CtDept ctDept){
+ * 创建某一级部门下树形结构
+ * @param ctDeptList 所有部门集合
+ * @param firstId 某一级组织编号
+ * @return List
+ */
+ public List<CtDept> createTree(List<CtDept> ctDeptList, String firstId) {
+ List<CtDept> firstMapList= new ArrayList<>();
+ for (CtDept ctDept: ctDeptList ){
+ for(CtDept deptParam: ctDeptList ) {
+ if (deptParam.getId().equals(ctDept.getParentId())) {
+ addToMBean(deptParam, ctDept);
+ break;
+ }
+ }
+ }
+ //取第一级节点
+ for (CtDept dept: ctDeptList ){
+ if (StringUtils.isNotEmpty(firstId)){
+ if (firstId.equals(dept.getId())) {
+ firstMapList.add(dept);
+ }
+ }else{
+ if (BaseConsts.ROOT.equals(dept.getParentId()) || StringUtils.isEmpty(dept.getParentId())) {
+ firstMapList.add(dept);
+ }
+ }
+ }
+ return firstMapList;
+ }
+
+ /**
+ * 获取部门的子级部门
+ * @param targetUnit 目标部门
+ * @param currentUnit 子级部门
+ */
+ public void addToMBean(CtDept targetUnit, CtDept currentUnit){
+ List<CtDept> childListObj = targetUnit.getChildren();
+ List<CtDept> childList = null;
+ if(CollectionUtils.isEmpty(childListObj)) {
+ childList = new ArrayList();
+ targetUnit.setChildren(childList);
+ }else{
+ childList = childListObj;
+ }
+ childList.add(currentUnit);
+ }
+
+ /**
+ * 新增或更新对象部门
+ * @param ctDept 实体对象
+ */
+ public void saveCtDept(CtDept ctDept, String userId){
try{
+ // 获取当前登录用户
+ CtUser loginCtUser = ctUserService.getById(userId);
+
+ // 保存新增更新组织
+ ctDept.setCustId(loginCtUser.getCustId());
+
Date nowDate = DateUtils.getNowDate();
// 判断是否新增
if (IdUtils.checkNewId(ctDept.getId())){
ctDept.setId(utilsClient.getNewTimeId());
ctDept.setCreateTime(nowDate);
+ // 新增上级部门
+ if (StringUtils.isNotEmpty(ctDept.getDeptId())){
+ // 更新子级部门的父级编号为当前新增部门的编号
+ CtDept childCtDept = mapper.selectById(ctDept.getDeptId());
+ childCtDept.setParentId(ctDept.getId());
+ mapper.updateById(childCtDept);
+ }else{
+ // 新增下级部门,如果没有指定上级编号,则默认为根级
+ if (StringUtils.isBlank(ctDept.getParentId())) {
+ ctDept.setParentId(BaseConsts.ROOT);
+ }
+ }
}
ctDept.setUpdateTime(nowDate);
+ ctDept.setDeleteStatus(BaseConsts.DELETE_STATUS_0);
+ // 部门下成员
+ QueryWrapper<CtUser> ctUserQueryWrapper = new QueryWrapper<>();
+ ctUserQueryWrapper.eq("dept_id", ctDept.getId());
+ List<CtUser> matchUsers = ctUserService.list(ctUserQueryWrapper);
+ for (CtUser ctUser : matchUsers){
+ ctUser.setDeptId(null);
+ ctUser.setDeptName(null);
+ ctUserService.saveOrUpdate(ctUser);
+ }
+ List<CtUser> ctUsers = ctDept.getMatchUsers();
+ for (CtUser ctUser : ctUsers){
+ CtUser ctUser1 = ctUserService.getById(ctUser.getId());
+ ctUser1.setDeptId(ctDept.getId());
+ ctUser1.setDeptName(ctDept.getName());
+ ctUserService.saveOrUpdate(ctUser1);
+ }
this.saveOrUpdate(ctDept);
}catch (Exception e){
- log.error("[CtDeptService.saveCtDept]调用失败,异常信息:"+e, e);
+ log.error("service方法[CtDeptService.saveCtDept]调用异常:"+e, e);
throw new ServiceException("CtDeptService.saveCtDept", e);
}
}
--
Gitblit v1.8.0