|
@@ -5,8 +5,10 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
+import org.apache.ibatis.datasource.DataSourceException;
|
|
|
import org.springblade.common.config.MD5Util;
|
|
|
//import org.springblade.common.utils.PinYinUtil;
|
|
|
+import org.springblade.common.enums.NumberEnum;
|
|
|
import org.springblade.core.secure.BladeUser;
|
|
|
import org.springblade.core.secure.utils.AuthUtil;
|
|
|
import org.springblade.core.secure.utils.SecureUtil;
|
|
@@ -311,55 +313,101 @@ public class UserClient implements IUserClient {
|
|
|
return R.fail("缺少经销商角色,请先维护角色");
|
|
|
}
|
|
|
BladeUser bladeUser = AuthUtil.getUser();
|
|
|
- R<Dept> dealerDept = sysClient.getDeptIByName(bladeUser.getTenantId(), "经销商");
|
|
|
- if (!dealerDept.isSuccess() || Objects.isNull(dealerDept.getData())) {
|
|
|
- return R.fail("缺少经销商部门,请先维护部门");
|
|
|
+ Dept dept = sysClient.getDealerDept();
|
|
|
+ if (Objects.isNull(dept)) {
|
|
|
+ return R.fail("缺少经销商部门,请先在\" 库比森轮胎(江苏)有限公司 \" 下维护 \" 经销商 \" 部门");
|
|
|
}
|
|
|
- Dept dept = dealerDept.getData();
|
|
|
+ List<Dept> dealerDeptList = sysClient.getChildDeptListByParentId(dept.getId());
|
|
|
String dealerRoleId = String.valueOf(dealerRole.getData());
|
|
|
List<User> dealerUserList = service.list(new LambdaQueryWrapper<User>().eq(User::getTenantId, bladeUser.getTenantId()).eq(User::getUserTypeRole, 2));
|
|
|
List<User> insertOrUpdateUserList = new ArrayList<>();
|
|
|
+ List<Dept> updateDeptList = new ArrayList<>();
|
|
|
Date nowDate = DateUtil.now();
|
|
|
if (!CollectionUtils.isEmpty(dealerUserList)) {
|
|
|
dealerUserList.forEach(usr -> usr.setIsDeleted(1));
|
|
|
}
|
|
|
for (ZcrmViewCustomerSel customerSel : customerSelList) {
|
|
|
- User insertOrUpdateUser = new User();
|
|
|
- insertOrUpdateUserList.add(insertOrUpdateUser);
|
|
|
- User srcUser = dealerUserList.stream().filter(u -> customerSel.getCustomerId().equals(u.getCustomerId()) && customerSel.getCustomerCode().equals(u.getCode())).findFirst().orElse(null);
|
|
|
- if (srcUser == null) {
|
|
|
- insertOrUpdateUser.setPassword(DigestUtil.hex(MD5Util.encryptionData("Kbs@888")));
|
|
|
- insertOrUpdateUser.setCreateTime(nowDate);
|
|
|
+ User srcUser = dealerUserList.stream().filter(u -> customerSel.getCustomerId().equals(u.getCustomerId())
|
|
|
+ && customerSel.getCustomerCode().equals(u.getCode())).findFirst().orElse(null);
|
|
|
+ User userToSave = new User();
|
|
|
+ boolean isNewUser = (srcUser == null);
|
|
|
+ if (isNewUser) {
|
|
|
+ // 新建用户
|
|
|
+ userToSave.setPassword(DigestUtil.hex(MD5Util.encryptionData("Kbs@888")));
|
|
|
+ userToSave.setCreateTime(nowDate);
|
|
|
} else {
|
|
|
- insertOrUpdateUser.setId(srcUser.getId());
|
|
|
- insertOrUpdateUser.setUpdateTime(nowDate);
|
|
|
- srcUser.setIsDeleted(0);
|
|
|
+ // 更新已有用户
|
|
|
+ userToSave.setId(srcUser.getId());
|
|
|
+ userToSave.setUpdateTime(nowDate);
|
|
|
+ userToSave.setWorkingStatus(0);
|
|
|
}
|
|
|
- insertOrUpdateUser.setDeptId(String.valueOf(dept.getId()));
|
|
|
- insertOrUpdateUser.setUserType(1);
|
|
|
- insertOrUpdateUser.setCode(customerSel.getCustomerCode());
|
|
|
- insertOrUpdateUser.setName(customerSel.getCustomerName());
|
|
|
- insertOrUpdateUser.setRealName(customerSel.getCustomerName());
|
|
|
- insertOrUpdateUser.setCustomerId(customerSel.getCustomerId());
|
|
|
- insertOrUpdateUser.setRoleId(dealerRoleId);
|
|
|
- insertOrUpdateUser.setAccount(customerSel.getCustomerCode());
|
|
|
- // insertOrUpdateUser.setAccount(customerSel.getDescFlexFieldPrivateDescSeg1());
|
|
|
- insertOrUpdateUser.setPhone(customerSel.getDescFlexFieldPrivateDescSeg2());
|
|
|
- insertOrUpdateUser.setBankDeposit(customerSel.getBuyerBankAccount());
|
|
|
- insertOrUpdateUser.setBankAccount(customerSel.getBuyerBankAccountCode());
|
|
|
- insertOrUpdateUser.setUserTypeRole(2);
|
|
|
+ // 处理部门逻辑
|
|
|
+ Dept deptToUse = handleDepartment(customerSel.getCustomerName(), srcUser, dealerDeptList, dept.getId(), bladeUser.getTenantId(), updateDeptList);
|
|
|
+ userToSave.setDeptId(String.valueOf(deptToUse.getId()));
|
|
|
+ insertOrUpdateUserList.add(userToSave);
|
|
|
+ userToSave.setDeptId(String.valueOf(dept.getId()));
|
|
|
+ userToSave.setUserType(1);
|
|
|
+ userToSave.setCode(customerSel.getCustomerCode());
|
|
|
+ userToSave.setName(customerSel.getCustomerName());
|
|
|
+ userToSave.setRealName(customerSel.getCustomerName());
|
|
|
+ userToSave.setCustomerId(customerSel.getCustomerId());
|
|
|
+ userToSave.setRoleId(dealerRoleId);
|
|
|
+ userToSave.setAccount(customerSel.getCustomerCode());
|
|
|
+ // userToSave.setAccount(customerSel.getDescFlexFieldPrivateDescSeg1());
|
|
|
+ userToSave.setPhone(customerSel.getDescFlexFieldPrivateDescSeg2());
|
|
|
+ userToSave.setBankDeposit(customerSel.getBuyerBankAccount());
|
|
|
+ userToSave.setBankAccount(customerSel.getBuyerBankAccountCode());
|
|
|
+ userToSave.setUserTypeRole(2);
|
|
|
}
|
|
|
List<User> delUserList = dealerUserList.stream().filter(u -> u.getIsDeleted() == 1).collect(Collectors.toList());
|
|
|
for (User user : delUserList) {
|
|
|
+ Dept existingDept = dealerDeptList.stream().filter(d -> d.getId().equals(Long.valueOf(user.getDeptId()))).findFirst().orElse(null);
|
|
|
+ if (existingDept != null) {
|
|
|
+ existingDept.setStatus(1);
|
|
|
+ updateDeptList.add(existingDept);
|
|
|
+ }
|
|
|
User delUser = new User();
|
|
|
delUser.setId(user.getId());
|
|
|
- delUser.setIsDeleted(1);
|
|
|
+ delUser.setWorkingStatus(1);
|
|
|
delUser.setUpdateTime(nowDate);
|
|
|
insertOrUpdateUserList.add(delUser);
|
|
|
}
|
|
|
+ // 批量启用、禁用部门
|
|
|
+ if (!CollectionUtils.isEmpty(updateDeptList)) {
|
|
|
+ boolean updateSuccess = sysClient.updateDeptBatch(updateDeptList);
|
|
|
+ if (!updateSuccess) {
|
|
|
+ throw new RuntimeException("更新部门失败");
|
|
|
+ }
|
|
|
+ }
|
|
|
boolean updateCount = service.saveOrUpdateBatch(insertOrUpdateUserList);
|
|
|
- return updateCount ? R.success("成功") : R.fail("失败");
|
|
|
+ if (!updateCount) {
|
|
|
+ throw new RuntimeException("更新用户失败");
|
|
|
+ }
|
|
|
+ return R.success("成功");
|
|
|
}
|
|
|
|
|
|
|
|
|
+ private Dept handleDepartment(String customerName, User srcUser, List<Dept> dealerDeptList,
|
|
|
+ Long parentId, String tenantId, List<Dept> updateDeptList) {
|
|
|
+ if (srcUser != null && srcUser.getDeptId() != null) {
|
|
|
+ Long deptId = Long.valueOf(srcUser.getDeptId());
|
|
|
+ Dept existingDept = dealerDeptList.stream().filter(d -> d.getId().equals(deptId)).findFirst().orElse(null);
|
|
|
+ if (existingDept != null) {
|
|
|
+ // 更新现有部门信息
|
|
|
+ existingDept.setStatus(0);
|
|
|
+ existingDept.setDeptName(customerName);
|
|
|
+ existingDept.setFullName(customerName);
|
|
|
+ updateDeptList.add(existingDept);
|
|
|
+ return existingDept;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 创建新部门
|
|
|
+ Dept newDept = new Dept(parentId, customerName, customerName, NumberEnum.THREE.number, tenantId);
|
|
|
+ boolean success = sysClient.insertDept(newDept);
|
|
|
+ if (!success) {
|
|
|
+ throw new DataSourceException("添加部门失败");
|
|
|
+ }
|
|
|
+ return newDept;
|
|
|
+ }
|
|
|
+
|
|
|
}
|