Compare commits

...

3 Commits

Author SHA1 Message Date
furongxin
e401eef546 perf(bpm): 优化流程 CC 列表接口性能
- 在处理流程 CC 列表时,增加了对结果列表的非空判断
- 只有在列表非空的情况下,才进行部门和用户组信息的查询和设置
- 这样可以减少不必要的 API调用,提高接口性能
2025-03-10 21:11:01 +08:00
furongxin
2ffd3ffadb fix(smartfactory): 修复员工统计性别空指针异常
- 在计算男性和女性员工总数时,增加了对性别字段的非空检查
- 避免在性别字段为 null 时发生空指针异常,提高代码健壮性
2025-03-10 21:10:37 +08:00
furongxin
57838d91dd refactor(system): 更新用户部门时同步更新日志使用人部门- 在 AdminUserServiceImpl 中添加更新日志使用人部门的逻辑- 在 LogUseService 接口中新增 updateUseDeptId 方法
- 在 LogUseServiceImpl 中实现 updateUseDeptId 方法
- 优化 LogInstanceServiceImpl 中的日志实例导出查询,支持查询所有下级部门
2025-03-10 21:10:19 +08:00
7 changed files with 56 additions and 23 deletions

View File

@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.bpm.controller.admin.definition;
import cn.hutool.core.collection.CollUtil;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
@ -85,27 +86,31 @@ public class BpmProcessCcController {
PageResult<BpmProcessCcDO> pageResult = processCcService.getProcessCcPage(pageReqVO);
PageResult<BpmProcessCcRespVO> respVOPageResult = BeanUtils.toBean(pageResult, BpmProcessCcRespVO.class);
// 获取公司部门Map
Map<Long, DeptRespDTO> deptMap = convertMap(deptApi.getCompanyDept().getCheckedData(), DeptRespDTO::getId);
// 获取列表中所有用户组详情
List<BpmUserGroupDO> groupDOS = groupService.getUserGroupList(
respVOPageResult.getList().stream()
.flatMap(item -> item.getUserGroupId().stream())
.collect(Collectors.toSet()));
// 转换Map
Map<Long, String> groupNameMap = convertMap(groupDOS, BpmUserGroupDO::getId, BpmUserGroupDO::getName);
if (CollUtil.isNotEmpty(respVOPageResult.getList())) {
respVOPageResult.getList().forEach(data -> {
// 获取公司部门Map
Map<Long, DeptRespDTO> deptMap = convertMap(deptApi.getCompanyDept().getCheckedData(), DeptRespDTO::getId);
// 获取列表中所有用户组详情
List<BpmUserGroupDO> groupDOS = groupService.getUserGroupList(
respVOPageResult.getList().stream()
.flatMap(item -> item.getUserGroupId().stream())
.collect(Collectors.toSet()));
// 转换Map
Map<Long, String> groupNameMap = convertMap(groupDOS, BpmUserGroupDO::getId, BpmUserGroupDO::getName);
respVOPageResult.getList().forEach(data -> {
// 设置用户组名称
data.setGroupName(data.getUserGroupId().stream()
.map(groupNameMap::get)
.collect(Collectors.joining("")));
// 设置公司名称
data.setCompanyName(data.getCompanyDeptId().stream()
.map(item -> deptMap.get(item) != null ? deptMap.get(item).getName() : "")
.collect(Collectors.joining("")));
});
}
// 设置用户组名称
data.setGroupName(data.getUserGroupId().stream()
.map(groupNameMap::get)
.collect(Collectors.joining("")));
// 设置公司名称
data.setCompanyName(data.getCompanyDeptId().stream()
.map(item -> deptMap.get(item) != null ? deptMap.get(item).getName() : "")
.collect(Collectors.joining("")));
});
return success(respVOPageResult);
}
}

View File

@ -41,6 +41,7 @@ import cn.iocoder.yudao.module.system.service.dept.DeptService;
import cn.iocoder.yudao.module.system.service.dept.PostService;
import cn.iocoder.yudao.module.system.service.permission.PermissionService;
import cn.iocoder.yudao.module.system.service.tenant.TenantService;
import cn.iocoder.yudao.module.system.service.worklog.LogUseService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.google.common.annotations.VisibleForTesting;
@ -100,6 +101,9 @@ public class AdminUserServiceImpl implements AdminUserService {
@Resource
private FileApi fileApi;
@Resource
private LogUseService logUseService;
@Override
@Transactional(rollbackFor = Exception.class)
public void updateUserOpenId(Long id, String openId) {
@ -155,9 +159,14 @@ public class AdminUserServiceImpl implements AdminUserService {
userMapper.updateById(updateObj);
// 更新岗位
updateUserPost(updateReqVO, updateObj);
// 更新日志使用人信息
logUseService.updateUseDeptId(updateObj.getId(), updateObj.getDeptId());
}
private void updateUserPost(UserSaveReqVO reqVO, AdminUserDO updateObj) {
Long userId = reqVO.getId();
Set<Long> dbPostIds = convertSet(userPostMapper.selectListByUserId(userId), UserPostDO::getPostId);
// 计算新增和删除的岗位编号

View File

@ -450,8 +450,11 @@ public class LogInstanceServiceImpl implements LogInstanceService {
@Override
public List<LogExportExcelVO> getLogInstanceExport(LogExportVO reqVO) {
// 获取所有部门及下级部门信息
List<DeptDO> deptDOS = deptService.getChildDept(reqVO.getCompanyDeptId());
List<LogInstanceDO> list = logInstanceMapper.selectList(new LambdaQueryWrapperX<LogInstanceDO>()
.eqIfPresent(LogInstanceDO::getDeptId, reqVO.getCompanyDeptId())
.inIfPresent(LogInstanceDO::getDeptId, convertList(deptDOS, DeptDO::getId))
.eqIfPresent(LogInstanceDO::getFormId, reqVO.getFormId())
.betweenIfPresent(LogInstanceDO::getTime, reqVO.getTime()));

View File

@ -10,6 +10,7 @@ import cn.iocoder.yudao.module.system.dal.mysql.worklog.LogFormMapper;
import cn.iocoder.yudao.module.system.dal.mysql.worklog.LogRuleMapper;
import cn.iocoder.yudao.module.system.service.worklog.dto.LogUseSaveReqDTO;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
@ -132,5 +133,4 @@ public class LogRuleServiceImpl implements LogRuleService {
return logRuleMapper.selectOne(new LambdaQueryWrapper<LogRuleDO>()
.eq(LogRuleDO::getFormId, formId));
}
}

View File

@ -74,4 +74,11 @@ public interface LogUseService {
* @return 模版列表
*/
List<Long> getFormIdList(List<Long> deptIds);
/**
* 更新日志规则使用部门id
* @param userId 用户编号
* @param deptId 部门编号
*/
void updateUseDeptId(Long userId, Long deptId);
}

View File

@ -5,6 +5,7 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.system.dal.dataobject.worklog.LogUseDO;
import cn.iocoder.yudao.module.system.dal.mysql.worklog.LogUseMapper;
import cn.iocoder.yudao.module.system.service.worklog.dto.LogUseSaveReqDTO;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
@ -106,4 +107,12 @@ public class LogUseServiceImpl implements LogUseService {
List<LogUseDO> logUseDOS = logUseMapper.selectList(LogUseDO::getUseUserDept, deptIds);
return logUseDOS.stream().map(LogUseDO::getFormId).distinct().collect(Collectors.toList());
}
@Override
public void updateUseDeptId(Long userId, Long deptId) {
logUseMapper.update(null, new LambdaUpdateWrapper<LogUseDO>()
.set(LogUseDO::getUseUserDept, deptId)
.eq(LogUseDO::getUseUserId, userId));
}
}

View File

@ -116,8 +116,8 @@ public class StaffServiceImpl implements StaffService {
});
vo.setTotal(dos.size());
vo.setMaleTotal((int) dos.stream().filter(a -> a.getSex() == 0).count());
vo.setFemaleTotal((int) dos.stream().filter(a -> a.getSex() == 1).count());
vo.setMaleTotal((int) dos.stream().filter(a -> a.getSex() != null && a.getSex() == 0).count());
vo.setFemaleTotal((int) dos.stream().filter(a -> a.getSex() != null && a.getSex() == 1).count());
vo.setStaffInfos(dos);
return vo;
}