接入司机开票申请待办流程

This commit is contained in:
jsowell
2026-07-16 17:06:49 +08:00
parent 974e68cf54
commit cbc2e3c721
13 changed files with 353 additions and 20 deletions

View File

@@ -56,4 +56,10 @@ public interface SysTodoTaskMapper {
int cancelTodo(@Param("todoId") Long todoId,
@Param("reason") String reason,
@Param("updateBy") String updateBy);
int cancelTodoByBusiness(@Param("businessType") String businessType,
@Param("businessId") String businessId,
@Param("assigneeUserId") Long assigneeUserId,
@Param("reason") String reason,
@Param("updateBy") String updateBy);
}

View File

@@ -19,6 +19,14 @@ public interface SysUserMapper {
*/
List<SysUser> selectUserList(SysUser sysUser);
/**
* 查询部门及下级部门的正常用户 ID。
*
* @param deptId 部门 ID
* @return 用户 ID 集合
*/
List<Long> selectActiveUserIdsByDeptTree(@Param("deptId") Long deptId);
/**
* 根据条件分页查询已配用户角色列表
*

View File

@@ -0,0 +1,12 @@
package com.jsowell.system.service;
import java.util.List;
/**
* 待办接收人解析服务。
*
* @author jsowell
*/
public interface TodoTaskAssigneeService {
List<Long> findActiveUserIdsByDeptTree(Long deptId);
}

View File

@@ -36,4 +36,7 @@ public interface TodoTaskService {
boolean cancelForAssignee(Long todoId, Long assigneeUserId, String operatorName, String reason);
boolean cancel(Long todoId, Long operatorId, String operatorName, String reason);
int cancelByBusiness(String businessType, String businessId, Long assigneeUserId,
String operatorName, String reason);
}

View File

@@ -0,0 +1,28 @@
package com.jsowell.system.service.impl;
import com.jsowell.common.exception.ServiceException;
import com.jsowell.system.mapper.SysUserMapper;
import com.jsowell.system.service.TodoTaskAssigneeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* 待办接收人解析服务实现。
*
* @author jsowell
*/
@Service
public class TodoTaskAssigneeServiceImpl implements TodoTaskAssigneeService {
@Autowired
private SysUserMapper userMapper;
@Override
public List<Long> findActiveUserIdsByDeptTree(Long deptId) {
if (deptId == null || deptId <= 0) {
throw new ServiceException("待办接收部门不能为空");
}
return userMapper.selectActiveUserIdsByDeptTree(deptId);
}
}

View File

@@ -191,6 +191,20 @@ public class TodoTaskServiceImpl implements TodoTaskService {
throw new ServiceException("当前待办状态不允许取消");
}
@Override
@Transactional(rollbackFor = Exception.class)
public int cancelByBusiness(String businessType, String businessId, Long assigneeUserId,
String operatorName, String reason) {
String safeBusinessType = normalizeRequired(businessType, "业务类型", 64);
String safeBusinessId = normalizeRequired(businessId, "业务主键", 64);
if (assigneeUserId != null) {
validateUserId(assigneeUserId);
}
String safeReason = normalizeRequired(reason, "取消原因", 500);
return todoTaskMapper.cancelTodoByBusiness(safeBusinessType, safeBusinessId, assigneeUserId,
safeReason, normalizeOperator(operatorName, null));
}
private SysTodoTask buildTask(TodoTaskCreateCommand command) {
if (command.getAssigneeUserId() == null || command.getAssigneeUserId() <= 0) {
throw new ServiceException("待办接收用户不能为空");

View File

@@ -212,4 +212,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
and del_flag = '0'
</update>
<update id="cancelTodoByBusiness">
update sys_todo_task
set task_status = 'CANCELLED',
cancel_reason = #{reason},
active_idempotent_key = null,
update_by = #{updateBy},
update_time = sysdate()
where business_type = #{businessType}
and business_id = #{businessId}
<if test="assigneeUserId != null">
and assignee_user_id = #{assigneeUserId}
</if>
and task_status in ('PENDING', 'PROCESSING')
and del_flag = '0'
</update>
</mapper>

View File

@@ -90,6 +90,23 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<!-- 数据范围过滤 -->
${params.dataScope}
</select>
<select id="selectActiveUserIdsByDeptTree" resultType="Long">
select distinct u.user_id
from sys_user u
where u.status = '0'
and u.del_flag = '0'
and (
u.dept_id = #{deptId}
or u.dept_id in (
select d.dept_id
from sys_dept d
where find_in_set(#{deptId}, d.ancestors)
and d.status = '0'
)
)
order by u.user_id
</select>
<select id="selectAllocatedList" parameterType="com.jsowell.common.core.domain.entity.SysUser" resultMap="SysUserResult">
select distinct u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.phone, u.status, u.create_time
@@ -225,4 +242,4 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</foreach>
</delete>
</mapper>
</mapper>