提案问题整改

This commit is contained in:
2026-10-14 17:12:55 +08:00
parent 3e7fc55a40
commit c19ee12f4c
5 changed files with 62 additions and 46 deletions
@@ -95,9 +95,9 @@ public class ProposalFeedbackEvaluationController {
Cnd cnd = Cnd.NEW();
cnd.and("t.taskName", "=", "feedback");
if (!AuthUtil.hasRole(RoleConstant.SYSADMIN.name())) {
cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId()));
}
/* if (!AuthUtil.hasRole(RoleConstant.SYSADMIN.name())) {
}*/
cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId()));
if (approval) {
cnd.and("t.taskState", "in", List.of(ProcessTaskStateEnum.FINISHED.getCode(), ProcessTaskStateEnum.INTERRUPT.getCode()));
@@ -36,7 +36,6 @@ import org.nutz.aop.interceptor.ioc.TransAop;
import org.nutz.dao.*;
import org.nutz.dao.sql.Sql;
import org.nutz.dao.util.Daos;
import org.nutz.dao.util.cri.SqlExpressionGroup;
import org.nutz.ioc.aop.Aop;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
@@ -201,43 +200,16 @@ public class TeacherCongressDelegateManageController {
}
/**
* 代表调整搜索用户
* 按姓名或工号搜索可添加到代表调整列表的人员。
*
* @param param
* @return
* @param param sessionId 为必填的目标届次ID;keyWord 为必填的姓名或工号关键字,候选人员不限定为本届已有代表
* @return Result,其 data 为最多10条人员记录;id、userId 均为用户ID,userName、loginName、sex、unionName、unitName 分别为姓名、工号、性别、工会和单位
*/
@At
@SaCheckPermission("tc.delegate.manage")
@Ok("json:{ignoreNull:true}")
public Result adjustUserList(@Valid TeacherCongressDelegateManageSearchAdjustUserParam param) {
// Dao extDao = Daos.ext(dao, FieldFilter.create(Teacher_congress_delegate.class, "^id|userId|userName|loginName|unitName$"));
// SqlExpressionGroup seg = new SqlExpressionGroup();
// seg.orLike("userName", param.getKeyWord());
// seg.orLike("loginName", param.getKeyWord());
// List<Teacher_congress_delegate> list = extDao.query(Teacher_congress_delegate.class, Cnd.where("sessionId", "=", param.getSessionId()).and(seg).limit(1, 10));
// return Result.success(list);
Sql sql = Sqls.create("""
SELECT
u.id,
u.id AS userId,
u.username AS userName,
u.loginname AS loginName,
u.sex,
u.unionName,
u.unitName
FROM
vw_user u
LEFT JOIN teacher_congress_delegate tcd ON tcd.userId = u.id
$condition
""");
Cnd cnd = Cnd.NEW();
SqlExpressionGroup seg = new SqlExpressionGroup();
seg.orLike("u.username", param.getKeyWord());
seg.orLike("u.loginname", param.getKeyWord());
cnd.and(seg);
sql.setCondition(cnd);
Pagination pagination = sysUserService.listPageMap(1, 10, sql);
return Result.success(pagination.getList());
return Result.success(teacherDelegateService.listAdjustUsers(param));
}
/**
@@ -5,6 +5,7 @@ import com.budwk.app.base.service.BaseService;
import com.budwk.app.zhgh.democratic.teachercongress.delegate.models.Teacher_congress_delegate;
import com.budwk.app.zhgh.democratic.teachercongress.delegate.param.TeacherCongressDelegateManagePageParam;
import com.budwk.app.zhgh.democratic.teachercongress.delegate.param.TeacherCongressDelegateManagePublicUserParam;
import com.budwk.app.zhgh.democratic.teachercongress.delegate.param.TeacherCongressDelegateManageSearchAdjustUserParam;
import org.nutz.lang.util.NutMap;
import javax.servlet.http.HttpServletResponse;
@@ -31,6 +32,14 @@ public interface TeacherCongressDelegateService extends BaseService<Teacher_cong
*/
List<NutMap> listPublicUsers(TeacherCongressDelegateManagePublicUserParam param);
/**
* 按姓名或工号搜索代表调整候选人员,包含尚未成为本届代表的用户。
*
* @param param sessionId 为目标届次ID,不用于限制候选人员;keyWord 为姓名或工号关键字
* @return 最多10条人员记录;id、userId 均为用户ID,userName、loginName、sex、unionName、unitName 分别为姓名、工号、性别、工会和单位
*/
List<NutMap> listAdjustUsers(TeacherCongressDelegateManageSearchAdjustUserParam param);
/**
* 根据系统配置的单位或分工会组成关系,为尚未归团的代表自动分配代表团。
*
@@ -21,6 +21,7 @@ import com.budwk.app.zhgh.democratic.proposal.service.common.ProposalCommonServi
import com.budwk.app.zhgh.democratic.teachercongress.delegate.models.Teacher_congress_delegate;
import com.budwk.app.zhgh.democratic.teachercongress.delegate.param.TeacherCongressDelegateManagePageParam;
import com.budwk.app.zhgh.democratic.teachercongress.delegate.param.TeacherCongressDelegateManagePublicUserParam;
import com.budwk.app.zhgh.democratic.teachercongress.delegate.param.TeacherCongressDelegateManageSearchAdjustUserParam;
import com.budwk.app.zhgh.democratic.teachercongress.delegate.vo.TeacherCongressDelegateExcelVO;
import com.budwk.app.zhgh.democratic.teachercongress.prepare.models.Teacher_congress_session;
import com.budwk.app.zhgh.democratic.teachercongress.prepare.service.TeacherCongressSessionService;
@@ -107,6 +108,35 @@ public class TeacherCongressDelegateServiceImpl extends BaseServiceImpl<Teacher_
return listMap(sql);
}
/**
* 直接查询用户视图,避免同一用户的多届次代表记录将候选人员重复展开。
*
* @param param sessionId 为目标届次ID,保留跨届次及非代表用户的搜索范围;keyWord 为姓名或工号关键字
* @return 最多10条 NutMap 人员记录,包含用户ID(id、userId)、姓名、工号、性别、工会和单位
*/
@Override
public List<NutMap> listAdjustUsers(TeacherCongressDelegateManageSearchAdjustUserParam param) {
Sql sql = Sqls.create("""
SELECT
u.id,
u.id AS userId,
u.username AS userName,
u.loginname AS loginName,
u.sex,
u.unionName,
u.unitName
FROM vw_user u
$condition
""");
SqlExpressionGroup seg = new SqlExpressionGroup();
seg.orLike("u.username", param.getKeyWord());
seg.orLike("u.loginname", param.getKeyWord());
sql.setCondition(Cnd.NEW().and(seg));
// 下拉候选列表沿用最多10条的限制,不依赖代表记录数量。
sql.setPager(dao().createPager(1, 10));
return listMap(sql);
}
/**
* 为当前届次未归团代表批量解析代表团,同时刷新其届次代表角色,避免重复生成角色关系。
*/
@@ -16,17 +16,22 @@
:value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item prop="userId" label="代表">
<user-select v-model="formData.userId"
ref="userSelectRef"
v-if="dialogFormVisible"
api="/platform/teacherCongress/delegate/manage/adjustUserList"
:api_params="{sessionId:formData.sessionId}"
api_input_key_name="keyWord"
placeholder="请选择代表"
:option_label_func="(item)=>{return item.userName + item.loginName + '(' + item.unitName + ')'}"
></user-select>
<el-button icon="el-icon-plus" type="primary" @click="move">添加到待调整列表</el-button>
<el-form-item prop="userId" label="代表" style="flex: 1; min-width: 0; margin-left: 24px;">
<!-- 选择框占用剩余空间,添加按钮保持在右侧并与输入框垂直对齐。 -->
<div style="display: flex; align-items: center; gap: 12px;">
<div style="flex: 1; min-width: 0;">
<user-select v-model="formData.userId"
ref="userSelectRef"
v-if="dialogFormVisible"
api="/platform/teacherCongress/delegate/manage/adjustUserList"
:api_params="{sessionId:formData.sessionId}"
api_input_key_name="keyWord"
placeholder="请选择代表"
:option_label_func="(item)=>{return item.userName + item.loginName + '(' + item.unitName + ')'}"
></user-select>
</div>
<el-button icon="el-icon-plus" type="primary" style="flex-shrink: 0;" @click="move">添加到待调整列表</el-button>
</div>
</el-form-item>
</el-row>