添加相关方项目培训用户分页查询功能

dev
zhangyue 2026-03-30 17:07:13 +08:00
parent 1a3365b921
commit 0e8138b9b5
11 changed files with 353 additions and 19 deletions

View File

@ -2,10 +2,7 @@ package com.zcloud.edu.web.training;
import com.zcloud.edu.api.training.TrainingUserServiceI; import com.zcloud.edu.api.training.TrainingUserServiceI;
import com.zcloud.edu.dto.training.TrainingUserAddCmd; import com.zcloud.edu.dto.training.*;
import com.zcloud.edu.dto.training.TrainingUserEntranceQry;
import com.zcloud.edu.dto.training.TrainingUserPageQry;
import com.zcloud.edu.dto.training.TrainingUserUpdateCmd;
import com.zcloud.edu.dto.clientobject.training.TrainingUserCO; import com.zcloud.edu.dto.clientobject.training.TrainingUserCO;
import com.alibaba.cola.dto.MultiResponse; import com.alibaba.cola.dto.MultiResponse;
import com.alibaba.cola.dto.PageResponse; import com.alibaba.cola.dto.PageResponse;
@ -65,6 +62,24 @@ public class TrainingUserController {
return MultiResponse.of(trainingUserService.listAllByPhones(qry)); return MultiResponse.of(trainingUserService.listAllByPhones(qry));
} }
/**
* 使
* @return
*/
@ApiOperation("相关方项目使用(分页)")
@PostMapping("/listEduUserPage")
public PageResponse<TrainingUserCO> listEduUserPage(@RequestBody TrainingUserPageProjectQry qry) {
return trainingUserService.listEduUserPage(qry);
} /**
* 使
* @return
*/
@ApiOperation("相关方项目使用")
@PostMapping("/listEduUser")
public MultiResponse<TrainingUserCO> listEduUser(@RequestBody TrainingUserPageProjectQry qry) {
return trainingUserService.listEduUser(qry);
}
@ApiOperation("详情") @ApiOperation("详情")
@GetMapping("/{id}") @GetMapping("/{id}")
public SingleResponse<TrainingUserCO> getInfoById(@PathVariable("id") Long id) { public SingleResponse<TrainingUserCO> getInfoById(@PathVariable("id") Long id) {

View File

@ -1,8 +1,10 @@
package com.zcloud.edu.command.query.training; package com.zcloud.edu.command.query.training;
import com.alibaba.cola.dto.MultiResponse; import com.alibaba.cola.dto.MultiResponse;
import com.jjb.saas.framework.auth.utils.AuthContext;
import com.zcloud.edu.command.convertor.training.TrainingUserCoConvertor; import com.zcloud.edu.command.convertor.training.TrainingUserCoConvertor;
import com.zcloud.edu.dto.training.TrainingUserEntranceQry; import com.zcloud.edu.dto.training.TrainingUserEntranceQry;
import com.zcloud.edu.dto.training.TrainingUserPageProjectQry;
import com.zcloud.edu.dto.training.TrainingUserPageQry; import com.zcloud.edu.dto.training.TrainingUserPageQry;
import com.zcloud.edu.dto.clientobject.training.TrainingUserCO; import com.zcloud.edu.dto.clientobject.training.TrainingUserCO;
import com.zcloud.edu.persistence.dataobject.TrainingUserDO; import com.zcloud.edu.persistence.dataobject.TrainingUserDO;
@ -47,6 +49,38 @@ public class TrainingUserQueryExe {
return PageResponse.of(examCenterCOS, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex()); return PageResponse.of(examCenterCOS, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
} }
/**
*
*
* @param qry
* @return
*/
public PageResponse<TrainingUserCO> listEduUserPageExecute(TrainingUserPageProjectQry qry) {
Map<String,Object> params = PageQueryHelper.toHashMap(qry);
if (ObjectUtils.isEmpty(params.get("corpinfoId"))){
params.put("corpinfoId", AuthContext.getTenantId());
}
PageResponse<TrainingUserDO> pageResponse = trainingUserRepository.listEduUserPage(params);
List<TrainingUserCO> examCenterCOS = trainingUserCoConvertor.converDOsToCOs(pageResponse.getData());
return PageResponse.of(examCenterCOS, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
}
/**
*
*
* @param qry
* @return
*/
public MultiResponse<TrainingUserCO> listEduUserExecute(TrainingUserPageProjectQry qry) {
Map<String,Object> params = PageQueryHelper.toHashMap(qry);
if (ObjectUtils.isEmpty(params.get("corpinfoId"))){
params.put("corpinfoId", AuthContext.getTenantId());
}
List<TrainingUserDO> trainingUserDOS = trainingUserRepository.listEduUser(params);
List<TrainingUserCO> examCenterCOS = trainingUserCoConvertor.converDOsToCOs(trainingUserDOS);
return MultiResponse.of(examCenterCOS);
}
public List<EduProjectUserDO> listAllByPhonesExecute(List<EduProjectUserDO> qry) { public List<EduProjectUserDO> listAllByPhonesExecute(List<EduProjectUserDO> qry) {
List<String> phones = qry.stream().map(EduProjectUserDO::getPhone).collect(Collectors.toList()); List<String> phones = qry.stream().map(EduProjectUserDO::getPhone).collect(Collectors.toList());
Map<String, Object> params = new HashMap<String, Object>(); Map<String, Object> params = new HashMap<String, Object>();

View File

@ -6,10 +6,7 @@ import com.zcloud.edu.command.training.TrainingUserAddExe;
import com.zcloud.edu.command.training.TrainingUserRemoveExe; import com.zcloud.edu.command.training.TrainingUserRemoveExe;
import com.zcloud.edu.command.training.TrainingUserUpdateExe; import com.zcloud.edu.command.training.TrainingUserUpdateExe;
import com.zcloud.edu.command.query.training.TrainingUserQueryExe; import com.zcloud.edu.command.query.training.TrainingUserQueryExe;
import com.zcloud.edu.dto.training.TrainingUserAddCmd; import com.zcloud.edu.dto.training.*;
import com.zcloud.edu.dto.training.TrainingUserEntranceQry;
import com.zcloud.edu.dto.training.TrainingUserPageQry;
import com.zcloud.edu.dto.training.TrainingUserUpdateCmd;
import com.zcloud.edu.dto.clientobject.training.TrainingUserCO; import com.zcloud.edu.dto.clientobject.training.TrainingUserCO;
import com.alibaba.cola.dto.PageResponse; import com.alibaba.cola.dto.PageResponse;
@ -39,6 +36,16 @@ public class TrainingUserServiceImpl implements TrainingUserServiceI {
return trainingUserQueryExe.execute(qry); return trainingUserQueryExe.execute(qry);
} }
@Override
public PageResponse<TrainingUserCO> listEduUserPage(TrainingUserPageProjectQry qry) {
return trainingUserQueryExe.listEduUserPageExecute(qry);
}
@Override
public MultiResponse<TrainingUserCO> listEduUser(TrainingUserPageProjectQry qry) {
return trainingUserQueryExe.listEduUserExecute(qry);
}
@Override @Override
public SingleResponse add(TrainingUserAddCmd cmd) { public SingleResponse add(TrainingUserAddCmd cmd) {

View File

@ -1,10 +1,7 @@
package com.zcloud.edu.api.training; package com.zcloud.edu.api.training;
import com.alibaba.cola.dto.MultiResponse; import com.alibaba.cola.dto.MultiResponse;
import com.zcloud.edu.dto.training.TrainingUserAddCmd; import com.zcloud.edu.dto.training.*;
import com.zcloud.edu.dto.training.TrainingUserEntranceQry;
import com.zcloud.edu.dto.training.TrainingUserPageQry;
import com.zcloud.edu.dto.training.TrainingUserUpdateCmd;
import com.zcloud.edu.dto.clientobject.training.TrainingUserCO; import com.zcloud.edu.dto.clientobject.training.TrainingUserCO;
import com.alibaba.cola.dto.PageResponse; import com.alibaba.cola.dto.PageResponse;
@ -20,6 +17,8 @@ import java.util.List;
*/ */
public interface TrainingUserServiceI { public interface TrainingUserServiceI {
PageResponse<TrainingUserCO> listPage(TrainingUserPageQry qry); PageResponse<TrainingUserCO> listPage(TrainingUserPageQry qry);
PageResponse<TrainingUserCO> listEduUserPage(TrainingUserPageProjectQry qry);
MultiResponse<TrainingUserCO> listEduUser(TrainingUserPageProjectQry qry);
SingleResponse<TrainingUserCO> add(TrainingUserAddCmd cmd); SingleResponse<TrainingUserCO> add(TrainingUserAddCmd cmd);

View File

@ -1,6 +1,7 @@
package com.zcloud.edu.dto.clientobject.training; package com.zcloud.edu.dto.clientobject.training;
import com.alibaba.cola.dto.ClientObject; import com.alibaba.cola.dto.ClientObject;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
@ -35,6 +36,33 @@ public class TrainingUserCO extends ClientObject {
//考试状态:1.待考试2:考试通过,3:考试不通过 //考试状态:1.待考试2:考试通过,3:考试不通过
@ApiModelProperty(value = "考试状态:1.待考试2:考试通过,3:考试不通过") @ApiModelProperty(value = "考试状态:1.待考试2:考试通过,3:考试不通过")
private Long examineStatus; private Long examineStatus;
//姓名
@ApiModelProperty(value = "姓名")
private String name;
//所属部门
@ApiModelProperty(value = "所属部门")
private String departmentName;
//所属部门id
@ApiModelProperty(value = "所属部门id")
private Long departmentId;
//所属岗位
@ApiModelProperty(value = "所属岗位")
private String postName;
//所属岗位id
@ApiModelProperty(value = "所属岗位id")
private Long postId;
//当前培训证书有效状态 0-无效 1-有效
@ApiModelProperty(value = "当前培训证书有效状态 0-无效 1-有效")
private Integer stateFlag;
//乐观锁 //乐观锁
@ApiModelProperty(value = "乐观锁") @ApiModelProperty(value = "乐观锁")
private Integer version; private Integer version;

View File

@ -0,0 +1,37 @@
package com.zcloud.edu.dto.training;
import com.alibaba.cola.dto.PageQuery;
import io.swagger.models.auth.In;
import lombok.Data;
import java.util.List;
/**
* web-client
* @Author makejava
* @Date 2026-01-12 15:41:04
*/
@Data
public class TrainingUserPageProjectQry extends PageQuery {
/**
* ,
* - `like`: SQLLIKE
* - `eq`: SQL=
* - `gt`:
* - `lt`:
* - `ge`:
* - `le`:
* - `ne`: SQL!=
*/
private String likeTrainingUserId;
private Integer flowFlag;
private Integer noMain;
private Integer eqEmploymentFlag;
private List<Integer> departmentList;
private String name;
private Integer corpinfoId;
}

View File

@ -42,6 +42,34 @@ public class TrainingUserDO extends BaseDO {
@TableField(exist = false) @TableField(exist = false)
private Integer stateFlag; private Integer stateFlag;
//姓名
@ApiModelProperty(value = "姓名")
@TableField(exist = false)
private String name;
//所属部门
@ApiModelProperty(value = "所属部门")
@TableField(exist = false)
private String departmentName;
//所属部门id
@ApiModelProperty(value = "所属部门id")
@TableField(exist = false)
private Long departmentId;
//所属岗位
@ApiModelProperty(value = "所属岗位")
@TableField(exist = false)
private String postName;
//所属岗位id
@ApiModelProperty(value = "所属岗位id")
@TableField(exist = false)
private Long postId;
public TrainingUserDO(String trainingUserId) { public TrainingUserDO(String trainingUserId) {
this.trainingUserId = trainingUserId; this.trainingUserId = trainingUserId;
} }

View File

@ -1,5 +1,6 @@
package com.zcloud.edu.persistence.mapper; package com.zcloud.edu.persistence.mapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.zcloud.edu.persistence.dataobject.TrainingUserDO; import com.zcloud.edu.persistence.dataobject.TrainingUserDO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
@ -19,5 +20,8 @@ public interface TrainingUserMapper extends BaseMapper<TrainingUserDO> {
List<TrainingUserDO> listAllByPhones(@Param("params") Map<String,Object> params); List<TrainingUserDO> listAllByPhones(@Param("params") Map<String,Object> params);
IPage<TrainingUserDO> listEduUserPage(IPage<TrainingUserDO> page, @Param("params") Map<String, Object> params);
List<TrainingUserDO> listEduUser(@Param("params") Map<String, Object> params);
} }

View File

@ -38,6 +38,18 @@ public class TrainingUserRepositoryImpl extends BaseRepositoryImpl<TrainingUserM
return PageHelper.pageToResponse(result, result.getRecords()); return PageHelper.pageToResponse(result, result.getRecords());
} }
@Override
public PageResponse<TrainingUserDO> listEduUserPage(Map<String, Object> params) {
IPage<TrainingUserDO> iPage = new Query<TrainingUserDO>().getPage(params);
IPage<TrainingUserDO> result = trainingUserMapper.listEduUserPage(iPage, params);
return PageHelper.pageToResponse(result, result.getRecords());
}
@Override
public List<TrainingUserDO> listEduUser(Map<String, Object> params) {
return trainingUserMapper.listEduUser(params);
}
@Override @Override
public void updateTime(TrainingUserE trainingUserE) { public void updateTime(TrainingUserE trainingUserE) {
Map<String, Object> params = PageQueryHelper.toHashMap(trainingUserE); Map<String, Object> params = PageQueryHelper.toHashMap(trainingUserE);

View File

@ -16,6 +16,10 @@ import java.util.Map;
public interface TrainingUserRepository extends BaseRepository<TrainingUserDO> { public interface TrainingUserRepository extends BaseRepository<TrainingUserDO> {
PageResponse<TrainingUserDO> listPage(Map<String,Object> params); PageResponse<TrainingUserDO> listPage(Map<String,Object> params);
PageResponse<TrainingUserDO> listEduUserPage(Map<String,Object> params);
List<TrainingUserDO> listEduUser(Map<String,Object> params);
void updateTime(TrainingUserE trainingUserE); void updateTime(TrainingUserE trainingUserE);

View File

@ -34,9 +34,175 @@
#{phone} #{phone}
</foreach> </foreach>
</if> </if>
</where> </where>
</select> </select>
<select id="listEduUserPage" resultType="com.zcloud.edu.persistence.dataobject.TrainingUserDO">
select
u.id,
u.user_id,
u.username,
u.name,
u.corpinfo_id,
u.password,
u.main_corp_flag,
u.user_type,
u.department_id,
u.post_id,
u.post_name,
u.role_id,
u.email,
u.personnel_type,
u.personnel_type_name,
u.nation,
u.nation_name,
u.user_id_card,
u.user_avatar_url,
u.current_address,
u.location_address,
u.rank_level,
u.rank_level_name,
u.sort,
u.department_leader_flag,
u.deputy_leader_flag,
u.cultural_level,
u.cultural_level_name,
u.marital_status,
u.marital_status_name,
u.political_affiliation,
u.political_affiliation_name,
u.employment_flag,
u.flow_flag,
u.rz_flag,
u.version,
u.create_id,
u.create_name,
u.create_time,
u.update_id,
u.update_name,
u.update_time,
u.remarks,
u.delete_enum,
u.tenant_id,
u.org_id,
u.env,
u.open_id,
tu.phone,
case when tu.start_time &lt; now() and tu.end_time > now() then 1 else 0 end stateFlag
from
user u
left join training_user tu on tu.phone = u.username and tu.delete_enum = 'FALSE'
<where>
and u.delete_enum = 'FALSE'
<if test="params.noMain != null">
and u.id != u.corpinfo_id
</if>
<if test="params.name != null and params.name != ''">
and u.name LIKE CONCAT('%', #{params.name}, '%')
</if>
<if test="params.corpinfoId != null">
and u.corpinfo_id = #{params.corpinfoId}
</if>
<if test="params.flowFlag != null">
and u.flow_flag = #{params.flowFlag}
</if>
<if test="params.eqEmploymentFlag != null">
and u.employment_flag = #{params.eqEmploymentFlag}
</if>
<if test="params.departmentList != null and params.departmentList.size() > 0">
and u.department_id in
<foreach item="item" index="index" collection="params.departmentList" open="(" separator="," close=")">
#{item}
</foreach>
</if>
</where>
group by u.id
order by u.create_time desc
</select>
<select id="listEduUser" resultType="com.zcloud.edu.persistence.dataobject.TrainingUserDO">
select
u.id,
u.user_id,
u.username,
u.name,
u.corpinfo_id,
u.password,
u.main_corp_flag,
u.user_type,
u.department_id,
u.post_id,
u.post_name,
u.role_id,
u.email,
u.personnel_type,
u.personnel_type_name,
u.nation,
u.nation_name,
u.user_id_card,
u.user_avatar_url,
u.current_address,
u.location_address,
u.rank_level,
u.rank_level_name,
u.sort,
u.department_leader_flag,
u.deputy_leader_flag,
u.cultural_level,
u.cultural_level_name,
u.marital_status,
u.marital_status_name,
u.political_affiliation,
u.political_affiliation_name,
u.employment_flag,
u.flow_flag,
u.rz_flag,
u.version,
u.create_id,
u.create_name,
u.create_time,
u.update_id,
u.update_name,
u.update_time,
u.remarks,
u.delete_enum,
u.tenant_id,
u.org_id,
u.env,
u.open_id,
tu.phone,
case when tu.start_time &lt; now() and tu.end_time > now() then 1 else 0 end stateFlag
from
user u
left join training_user tu on tu.phone = u.username and tu.delete_enum = 'FALSE'
<where>
and u.delete_enum = 'FALSE'
<if test="params.noMain != null">
and u.id != u.corpinfo_id
</if>
<if test="params.name != null and params.name != ''">
AND u.name LIKE CONCAT('%', #{params.name}, '%')
</if>
<if test="params.corpinfoId != null">
and u.corpinfo_id = #{params.corpinfoId}
</if>
<if test="params.flowFlag != null">
and u.flow_flag = #{params.flowFlag}
</if>
<if test="params.eqEmploymentFlag != null">
and u.employment_flag = #{params.eqEmploymentFlag}
</if>
<if test="params.departmentList != null and params.departmentList.size() > 0">
and u.department_id in
<foreach item="item" index="index" collection="params.departmentList" open="(" separator="," close=")">
#{item}
</foreach>
</if>
</where>
group by u.id
order by u.create_time desc
</select>
</mapper> </mapper>