✨ 完善付款申请多结算行、结算导入与计费方式回填

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-10-19 12:06:49 +08:00
parent 74bc8c844d
commit c5d5687999
19 changed files with 449 additions and 70 deletions
@@ -45,13 +45,13 @@ public interface UserMapper extends BaseMapper<User> {
/**
* 自定义分页
*
* @param page
* @param user
* @param deptIdList
* @param tenantId
* @return
* @param page 分页
* @param user 查询条件
* @param deptId 部门 ID(含自身及子孙,由 SQL FIND_IN_SET 过滤;为空则不过滤部门)
* @param tenantId 租户 ID
* @return 用户列表
*/
List<User> selectUserPage(IPage<User> page, @Param("user") User user, @Param("deptIdList") List<Long> deptIdList, @Param("tenantId") String tenantId);
List<User> selectUserPage(IPage<User> page, @Param("user") User user, @Param("deptId") Long deptId, @Param("tenantId") String tenantId);
/**
* 获取用户
@@ -61,20 +61,21 @@
<if test="user.status!=null and user.status>=0">
and bu.status = #{user.status}
</if>
<if test="deptIdList!=null and deptIdList.size>0">
<if test="deptId != null">
and bu.id in (
SELECT
user_id
FROM
blade_user_dept
WHERE
status = 1 and is_deleted = 0 and dept_id IN
<foreach collection="deptIdList" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
select distinct bud.user_id
from blade_user_dept bud
where bud.status = 1
and bud.is_deleted = 0
and bud.dept_id in (
select bd.id
from blade_dept bd
where bd.is_deleted = 0
and (bd.id = #{deptId} or find_in_set(#{deptId}, bd.ancestors) &gt; 0)
)
)
</if>
ORDER BY bu.id
ORDER BY bu.create_time DESC, bu.id DESC
</select>
<select id="getUser" resultMap="userResultMap">
@@ -367,7 +367,9 @@ public class DeptServiceImpl extends ServiceImpl<DeptMapper, Dept> implements ID
@Override
public List<Dept> getDeptChild(Long deptId) {
return baseMapper.selectList(Wrappers.<Dept>query().lambda().like(Dept::getAncestors, deptId));
// 必须用 FIND_IN_SET:LIKE '%1%' 会误匹配雪花 ID 中的数字片段,导致子部门集合爆炸
return baseMapper.selectList(Wrappers.<Dept>query().lambda()
.apply("FIND_IN_SET({0}, ancestors)", String.valueOf(deptId)));
}
@Override
@@ -407,8 +407,8 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, User> implement
@Override
public IPage<User> selectUserPage(IPage<User> page, User user, Long deptId, String tenantId) {
normalizeUserSearch(user);
List<Long> deptIdList = SysCache.getDeptChildIds(deptId);
return page.setRecords(baseMapper.selectUserPage(page, user, deptIdList, tenantId));
// 部门过滤下推到 SQL(FIND_IN_SET),避免先展开整棵子树再拼超大 IN 列表
return page.setRecords(baseMapper.selectUserPage(page, user, deptId, tenantId));
}
@Override