refactor(bpm): 优化流程抄送配置功能

- 修改 OA 活动经费申请相关代码
- 优化补卡申请逻辑,增加对可补卡次数的检查
- 重构流程抄送配置相关控制器和数据对象
- 优化公司部门和用户组数据的获取和展示
This commit is contained in:
furongxin 2024-11-14 19:54:25 +08:00
parent b32f00b2d0
commit 4a3d32c0a4
7 changed files with 31 additions and 19 deletions

View File

@ -26,7 +26,7 @@ import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
@Tag(name = "管理后台 - BPM 流程抄送配置") @Tag(name = "管理后台 - BPM 流程抄送配置")
@RestController @RestController
@ -74,10 +74,6 @@ public class BpmProcessCcController {
public CommonResult<BpmProcessCcRespVO> getProcessCc(@RequestParam("id") Long id) { public CommonResult<BpmProcessCcRespVO> getProcessCc(@RequestParam("id") Long id) {
BpmProcessCcDO processCc = processCcService.getProcessCc(id); BpmProcessCcDO processCc = processCcService.getProcessCc(id);
BpmProcessCcRespVO respVO = BeanUtils.toBean(processCc, BpmProcessCcRespVO.class); BpmProcessCcRespVO respVO = BeanUtils.toBean(processCc, BpmProcessCcRespVO.class);
// 获取用户组详情
List<BpmUserGroupDO> groupDOS = groupService.getUserGroupList(processCc.getUserGroupId());
// 设置用户组名称
respVO.setGroupName(groupDOS.stream().map(BpmUserGroupDO::getName).collect(Collectors.joining(",")));
return success(respVO); return success(respVO);
} }
@ -90,15 +86,25 @@ public class BpmProcessCcController {
PageResult<BpmProcessCcRespVO> respVOPageResult = BeanUtils.toBean(pageResult, BpmProcessCcRespVO.class); PageResult<BpmProcessCcRespVO> respVOPageResult = BeanUtils.toBean(pageResult, BpmProcessCcRespVO.class);
// 获取公司部门Map // 获取公司部门Map
Map<Long, DeptRespDTO> deptMap = deptApi.getDeptMap(convertSet(respVOPageResult.getList(), BpmProcessCcRespVO::getCompanyDeptId)); 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 -> { respVOPageResult.getList().forEach(data -> {
// 获取用户组详情
List<BpmUserGroupDO> groupDOS = groupService.getUserGroupList(data.getUserGroupId());
// 设置用户组名称 // 设置用户组名称
data.setGroupName(groupDOS.stream().map(BpmUserGroupDO::getName).collect(Collectors.joining(","))); data.setGroupName(data.getUserGroupId().stream()
.map(groupNameMap::get)
.collect(Collectors.joining("")));
// 设置公司名称 // 设置公司名称
data.setCompanyName(deptMap.get(data.getCompanyDeptId()).getName()); data.setCompanyName(data.getCompanyDeptId().stream()
.map(item -> deptMap.get(item).getName())
.collect(Collectors.joining("")));
}); });
return success(respVOPageResult); return success(respVOPageResult);
} }

View File

@ -24,7 +24,7 @@ public class BpmProcessCcPageReqVO extends PageParam {
private String userGroupId; private String userGroupId;
@Schema(description = "公司部门编号", example = "114") @Schema(description = "公司部门编号", example = "114")
private Long companyDeptId; private String companyDeptId;
@Schema(description = "状态0正常 1停用") @Schema(description = "状态0正常 1停用")
private Integer status; private Integer status;

View File

@ -17,7 +17,7 @@ public class BpmProcessCcRespVO {
private String name; private String name;
@Schema(description = "公司部门编号", example = "114") @Schema(description = "公司部门编号", example = "114")
private Long companyDeptId; private Set<Long> companyDeptId;
@Schema(description = "公司部门名称", example = "114") @Schema(description = "公司部门名称", example = "114")
private String companyName; private String companyName;

View File

@ -18,7 +18,7 @@ public class BpmProcessCcSaveReqVO {
private String name; private String name;
@Schema(description = "公司部门编号", example = "114") @Schema(description = "公司部门编号", example = "114")
private Long companyDeptId; private Set<Long> companyDeptId;
@Schema(description = "绑定用户组编号") @Schema(description = "绑定用户组编号")
private Set<Long> userGroupId; private Set<Long> userGroupId;

View File

@ -33,11 +33,12 @@ public class BpmProcessCcDO extends BaseDO {
*/ */
private String name; private String name;
/** /**
* 公司部门编号 * 公司部门编号列表
*/ */
private Long companyDeptId; @TableField(typeHandler = JsonLongSetTypeHandler.class)
private Set<Long> companyDeptId;
/** /**
* 绑定用户组编号 * 绑定用户组编号列表
*/ */
@TableField(typeHandler = JsonLongSetTypeHandler.class) @TableField(typeHandler = JsonLongSetTypeHandler.class)
private Set<Long> userGroupId; private Set<Long> userGroupId;

View File

@ -9,7 +9,6 @@ import cn.iocoder.yudao.module.bpm.dal.mysql.oa.BpmOAFinanceMapper;
import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum; import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum;
import cn.iocoder.yudao.module.bpm.service.task.BpmHistoryProcessInstanceService; import cn.iocoder.yudao.module.bpm.service.task.BpmHistoryProcessInstanceService;
import cn.iocoder.yudao.module.bpm.service.task.BpmProcessInstanceService; import cn.iocoder.yudao.module.bpm.service.task.BpmProcessInstanceService;
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@ -23,7 +22,7 @@ import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionU
import static cn.iocoder.yudao.module.bpm.enums.ErrorCodeConstants.OA_FINANCE_NOT_EXISTS; import static cn.iocoder.yudao.module.bpm.enums.ErrorCodeConstants.OA_FINANCE_NOT_EXISTS;
/** /**
* OA 外出申请 Service 实现类 * OA 活动经费申请 Service 实现类
* *
* @author 符溶馨 * @author 符溶馨
@ -33,7 +32,7 @@ import static cn.iocoder.yudao.module.bpm.enums.ErrorCodeConstants.OA_FINANCE_NO
public class BpmOAFinanceServiceImpl extends BpmOABaseService implements BpmOAFinanceService{ public class BpmOAFinanceServiceImpl extends BpmOABaseService implements BpmOAFinanceService{
/** /**
* OA 外出对应的流程定义 KEY * OA 活动经费的流程定义 KEY
*/ */
public static final String PROCESS_KEY = "oa_finance_2"; public static final String PROCESS_KEY = "oa_finance_2";

View File

@ -71,6 +71,12 @@ public class BpmOAReplacementCardServiceImpl extends BpmOABaseService implements
@Override @Override
public Long createReplacementCard(Long userId, BpmOAReplacementCardCreateReqVO createReqVO) { public Long createReplacementCard(Long userId, BpmOAReplacementCardCreateReqVO createReqVO) {
// 获取用户可补卡次数
Integer count = attendanceApi.getReplacementCardNum().getCheckedData();
if (count <= 0) {
throw exception(INSUFFICIENT_NUMBER_OF_CARD_REFILLS);
}
//插入OA 补卡申请 //插入OA 补卡申请
BpmOAReplacementCardDO replacementCard = BeanUtils.toBean(createReqVO, BpmOAReplacementCardDO.class) BpmOAReplacementCardDO replacementCard = BeanUtils.toBean(createReqVO, BpmOAReplacementCardDO.class)
.setUserId(userId) .setUserId(userId)