新增劳动合同管理功能,包括试用期、历史签约信息和用户签约状态。
- 劳动合同管理界面新增试用期时间字段,支持设置试用期限。 - 实现了用户历史签约信息查询功能,可通过新接口获取用户的历史劳动合同。 - 优化了劳动合同分页查询的实现,提高查询效率和结果准确性。 - 为用户签约操作添加了UUID分配机制,确保用户记录的唯一性和正确性。
This commit is contained in:
parent
831d575514
commit
08b86ed048
@ -3,11 +3,17 @@ package cn.iocoder.yudao.module.system.controller.admin.laborcontract;
|
|||||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||||
|
import cn.iocoder.yudao.module.system.api.dept.DeptApi;
|
||||||
|
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
|
||||||
import cn.iocoder.yudao.module.system.controller.admin.laborcontract.vo.LaborContractPageReqVO;
|
import cn.iocoder.yudao.module.system.controller.admin.laborcontract.vo.LaborContractPageReqVO;
|
||||||
import cn.iocoder.yudao.module.system.controller.admin.laborcontract.vo.LaborContractRespVO;
|
import cn.iocoder.yudao.module.system.controller.admin.laborcontract.vo.LaborContractRespVO;
|
||||||
import cn.iocoder.yudao.module.system.controller.admin.laborcontract.vo.LaborContractSaveReqVO;
|
import cn.iocoder.yudao.module.system.controller.admin.laborcontract.vo.LaborContractSaveReqVO;
|
||||||
|
import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
|
||||||
import cn.iocoder.yudao.module.system.dal.dataobject.laborcontract.LaborContractDO;
|
import cn.iocoder.yudao.module.system.dal.dataobject.laborcontract.LaborContractDO;
|
||||||
|
import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
|
||||||
|
import cn.iocoder.yudao.module.system.service.dept.DeptService;
|
||||||
import cn.iocoder.yudao.module.system.service.laborcontract.LaborContractService;
|
import cn.iocoder.yudao.module.system.service.laborcontract.LaborContractService;
|
||||||
|
import cn.iocoder.yudao.module.system.service.user.AdminUserService;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.Parameter;
|
import io.swagger.v3.oas.annotations.Parameter;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
@ -18,6 +24,8 @@ import org.springframework.web.bind.annotation.*;
|
|||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
||||||
|
|
||||||
@Tag(name = "管理后台 - 劳动合同管理")
|
@Tag(name = "管理后台 - 劳动合同管理")
|
||||||
@ -62,11 +70,22 @@ public class LaborContractController {
|
|||||||
return success(BeanUtils.toBean(laborContract, LaborContractRespVO.class));
|
return success(BeanUtils.toBean(laborContract, LaborContractRespVO.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GetMapping("/get-history")
|
||||||
|
@Operation(summary = "获得用户历史签约信息")
|
||||||
|
@Parameter(name = "userId", description = "用户编号", required = true, example = "146")
|
||||||
|
@PreAuthorize("@ss.hasPermission('system:labor-contract:query')")
|
||||||
|
public CommonResult<List<LaborContractRespVO>> getHistoryList(@RequestParam("userId") Long userId) {
|
||||||
|
|
||||||
|
List<LaborContractDO> laborContracts = laborContractService.getHistoryList(userId);
|
||||||
|
|
||||||
|
return success(BeanUtils.toBean(laborContracts, LaborContractRespVO.class));
|
||||||
|
}
|
||||||
|
|
||||||
@GetMapping("/page")
|
@GetMapping("/page")
|
||||||
@Operation(summary = "获得劳动合同管理分页")
|
@Operation(summary = "获得劳动合同管理分页")
|
||||||
@PreAuthorize("@ss.hasPermission('system:labor-contract:query')")
|
@PreAuthorize("@ss.hasPermission('system:labor-contract:query')")
|
||||||
public CommonResult<PageResult<LaborContractRespVO>> getLaborContractPage(@Valid LaborContractPageReqVO pageReqVO) {
|
public CommonResult<PageResult<LaborContractRespVO>> getLaborContractPage(@Valid LaborContractPageReqVO pageReqVO) {
|
||||||
PageResult<LaborContractDO> pageResult = laborContractService.getLaborContractPage(pageReqVO);
|
|
||||||
return success(BeanUtils.toBean(pageResult, LaborContractRespVO.class));
|
return success(laborContractService.getLaborContractPage(pageReqVO));
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -39,6 +39,9 @@ public class LaborContractRespVO {
|
|||||||
@Schema(description = "签约次数")
|
@Schema(description = "签约次数")
|
||||||
private Integer signingCount;
|
private Integer signingCount;
|
||||||
|
|
||||||
|
@Schema(description = "试用期时间(月)", example = "3")
|
||||||
|
private Integer probationPeriodTime;
|
||||||
|
|
||||||
@Schema(description = "状态 0待签 1已签 2过期", example = "0")
|
@Schema(description = "状态 0待签 1已签 2过期", example = "0")
|
||||||
private Integer status;
|
private Integer status;
|
||||||
|
|
||||||
|
@ -24,11 +24,16 @@ public class LaborContractSaveReqVO {
|
|||||||
private Long deptId;
|
private Long deptId;
|
||||||
|
|
||||||
@Schema(description = "签约日期")
|
@Schema(description = "签约日期")
|
||||||
|
@NotNull(message = "签约日期不能为空")
|
||||||
private LocalDate signingDate;
|
private LocalDate signingDate;
|
||||||
|
|
||||||
@Schema(description = "签约年限")
|
@Schema(description = "签约年限")
|
||||||
|
@NotNull(message = "签约年限不能为空")
|
||||||
private Integer contractDuration;
|
private Integer contractDuration;
|
||||||
|
|
||||||
|
@Schema(description = "试用期时间(月)", example = "3")
|
||||||
|
private Integer probationPeriodTime;
|
||||||
|
|
||||||
@Schema(description = "状态 0待签 1已签 2过期", example = "0")
|
@Schema(description = "状态 0待签 1已签 2过期", example = "0")
|
||||||
private Integer status;
|
private Integer status;
|
||||||
|
|
||||||
|
@ -0,0 +1,17 @@
|
|||||||
|
package cn.iocoder.yudao.module.system.controller.admin.laborcontract.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 功能描述 用于给日志附件同用的上传文件对象
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class UploadFile {
|
||||||
|
|
||||||
|
@Schema(description = "文件管理 fileId", requiredMode = Schema.RequiredMode.REQUIRED, example = "123.jpg")
|
||||||
|
private String fileId;
|
||||||
|
|
||||||
|
@Schema(description = "文件URL", requiredMode = Schema.RequiredMode.REQUIRED, example = "http://xxx.xxx/xx/xx/123.jpgss")
|
||||||
|
private String url;
|
||||||
|
}
|
@ -1,6 +1,7 @@
|
|||||||
package cn.iocoder.yudao.module.system.dal.dataobject.laborcontract;
|
package cn.iocoder.yudao.module.system.dal.dataobject.laborcontract;
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
|
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
|
||||||
|
import cn.iocoder.yudao.module.system.controller.admin.laborcontract.vo.UploadFile;
|
||||||
import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.upload.UploadUserFile;
|
import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.upload.UploadUserFile;
|
||||||
import com.baomidou.mybatisplus.annotation.TableField;
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
@ -50,6 +51,10 @@ public class LaborContractDO extends BaseDO {
|
|||||||
* 签约年限
|
* 签约年限
|
||||||
*/
|
*/
|
||||||
private Integer contractDuration;
|
private Integer contractDuration;
|
||||||
|
/**
|
||||||
|
* 试用期限
|
||||||
|
*/
|
||||||
|
private Integer probationPeriodTime;
|
||||||
/**
|
/**
|
||||||
* 状态 0待签 1已签 2过期
|
* 状态 0待签 1已签 2过期
|
||||||
*/
|
*/
|
||||||
@ -58,5 +63,5 @@ public class LaborContractDO extends BaseDO {
|
|||||||
* 附件基本信息
|
* 附件基本信息
|
||||||
*/
|
*/
|
||||||
@TableField(typeHandler = JacksonTypeHandler.class)
|
@TableField(typeHandler = JacksonTypeHandler.class)
|
||||||
private List<UploadUserFile> fileItems;
|
private List<UploadFile> fileItems;
|
||||||
}
|
}
|
@ -1,13 +1,20 @@
|
|||||||
package cn.iocoder.yudao.module.system.dal.mysql.laborcontract;
|
package cn.iocoder.yudao.module.system.dal.mysql.laborcontract;
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
||||||
|
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||||
|
import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX;
|
||||||
import cn.iocoder.yudao.module.system.controller.admin.laborcontract.vo.LaborContractPageReqVO;
|
import cn.iocoder.yudao.module.system.controller.admin.laborcontract.vo.LaborContractPageReqVO;
|
||||||
import cn.iocoder.yudao.module.system.controller.admin.laborcontract.vo.LaborContractRespVO;
|
import cn.iocoder.yudao.module.system.controller.admin.laborcontract.vo.LaborContractRespVO;
|
||||||
import cn.iocoder.yudao.module.system.dal.dataobject.laborcontract.LaborContractDO;
|
import cn.iocoder.yudao.module.system.dal.dataobject.laborcontract.LaborContractDO;
|
||||||
|
import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
|
||||||
|
import cn.iocoder.yudao.module.system.dal.mysql.user.AdminUserMapper;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 劳动合同管理 Mapper
|
* 劳动合同管理 Mapper
|
||||||
*
|
*
|
||||||
@ -16,5 +23,10 @@ import org.apache.ibatis.annotations.Param;
|
|||||||
@Mapper
|
@Mapper
|
||||||
public interface LaborContractMapper extends BaseMapperX<LaborContractDO> {
|
public interface LaborContractMapper extends BaseMapperX<LaborContractDO> {
|
||||||
|
|
||||||
IPage<LaborContractRespVO> selectPage(@Param("page") IPage<LaborContractRespVO> mpPage, @Param("reqVO") LaborContractPageReqVO pageReqVO);
|
default List<LaborContractDO> selectHistoryList(Long userId) {
|
||||||
|
|
||||||
|
return selectList(new LambdaQueryWrapperX<LaborContractDO>()
|
||||||
|
.eqIfPresent(LaborContractDO::getUserId, userId)
|
||||||
|
.orderByDesc(LaborContractDO::getCreateTime));
|
||||||
|
}
|
||||||
}
|
}
|
@ -2,10 +2,12 @@ package cn.iocoder.yudao.module.system.service.laborcontract;
|
|||||||
|
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
import cn.iocoder.yudao.module.system.controller.admin.laborcontract.vo.LaborContractPageReqVO;
|
import cn.iocoder.yudao.module.system.controller.admin.laborcontract.vo.LaborContractPageReqVO;
|
||||||
|
import cn.iocoder.yudao.module.system.controller.admin.laborcontract.vo.LaborContractRespVO;
|
||||||
import cn.iocoder.yudao.module.system.controller.admin.laborcontract.vo.LaborContractSaveReqVO;
|
import cn.iocoder.yudao.module.system.controller.admin.laborcontract.vo.LaborContractSaveReqVO;
|
||||||
import cn.iocoder.yudao.module.system.dal.dataobject.laborcontract.LaborContractDO;
|
import cn.iocoder.yudao.module.system.dal.dataobject.laborcontract.LaborContractDO;
|
||||||
|
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 劳动合同管理 Service 接口
|
* 劳动合同管理 Service 接口
|
||||||
@ -50,6 +52,19 @@ public interface LaborContractService {
|
|||||||
* @param pageReqVO 分页查询
|
* @param pageReqVO 分页查询
|
||||||
* @return 劳动合同管理分页
|
* @return 劳动合同管理分页
|
||||||
*/
|
*/
|
||||||
PageResult<LaborContractDO> getLaborContractPage(LaborContractPageReqVO pageReqVO);
|
PageResult<LaborContractRespVO> getLaborContractPage(LaborContractPageReqVO pageReqVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得用户历史签约信息
|
||||||
|
* @param userId 用户编号
|
||||||
|
* @return 合同信息列表
|
||||||
|
*/
|
||||||
|
List<LaborContractDO> getHistoryList(Long userId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得指定用户的签约信息列表
|
||||||
|
* @param userIds 用户编号列表
|
||||||
|
* @return 签约信息列表
|
||||||
|
*/
|
||||||
|
List<LaborContractDO> getListByUserIds(List<Long> userIds);
|
||||||
}
|
}
|
@ -3,14 +3,21 @@ package cn.iocoder.yudao.module.system.service.laborcontract;
|
|||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||||
import cn.iocoder.yudao.module.system.controller.admin.laborcontract.vo.LaborContractPageReqVO;
|
import cn.iocoder.yudao.module.system.controller.admin.laborcontract.vo.LaborContractPageReqVO;
|
||||||
|
import cn.iocoder.yudao.module.system.controller.admin.laborcontract.vo.LaborContractRespVO;
|
||||||
import cn.iocoder.yudao.module.system.controller.admin.laborcontract.vo.LaborContractSaveReqVO;
|
import cn.iocoder.yudao.module.system.controller.admin.laborcontract.vo.LaborContractSaveReqVO;
|
||||||
|
import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance.LogInstanceRespVO;
|
||||||
import cn.iocoder.yudao.module.system.dal.dataobject.laborcontract.LaborContractDO;
|
import cn.iocoder.yudao.module.system.dal.dataobject.laborcontract.LaborContractDO;
|
||||||
import cn.iocoder.yudao.module.system.dal.mysql.laborcontract.LaborContractMapper;
|
import cn.iocoder.yudao.module.system.dal.mysql.laborcontract.LaborContractMapper;
|
||||||
|
import cn.iocoder.yudao.module.system.dal.mysql.user.AdminUserMapper;
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||||
import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.LABOR_CONTRACT_NOT_EXISTS;
|
import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.LABOR_CONTRACT_NOT_EXISTS;
|
||||||
|
|
||||||
@ -26,6 +33,9 @@ public class LaborContractServiceImpl implements LaborContractService {
|
|||||||
@Resource
|
@Resource
|
||||||
private LaborContractMapper laborContractMapper;
|
private LaborContractMapper laborContractMapper;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private AdminUserMapper userMapper;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Long createLaborContract(LaborContractSaveReqVO createReqVO) {
|
public Long createLaborContract(LaborContractSaveReqVO createReqVO) {
|
||||||
// 插入
|
// 插入
|
||||||
@ -64,8 +74,23 @@ public class LaborContractServiceImpl implements LaborContractService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PageResult<LaborContractDO> getLaborContractPage(LaborContractPageReqVO pageReqVO) {
|
public PageResult<LaborContractRespVO> getLaborContractPage(LaborContractPageReqVO pageReqVO) {
|
||||||
return null;
|
|
||||||
|
Page<LaborContractRespVO> page = new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize());
|
||||||
|
IPage<LaborContractRespVO> pageList = userMapper.selectContractPage(page, pageReqVO);
|
||||||
|
|
||||||
|
return new PageResult<>(pageList.getRecords(), pageList.getTotal());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<LaborContractDO> getHistoryList(Long userId) {
|
||||||
|
|
||||||
|
return laborContractMapper.selectHistoryList(userId);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<LaborContractDO> getListByUserIds(List<Long> userIds) {
|
||||||
|
|
||||||
|
return laborContractMapper.selectList(LaborContractDO::getUserId, userIds);
|
||||||
|
}
|
||||||
}
|
}
|
@ -8,64 +8,4 @@
|
|||||||
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
|
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
|
||||||
文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
|
文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<select id="selectPage" resultType="cn.iocoder.yudao.module.system.controller.admin.laborcontract.vo.LaborContractRespVO">
|
|
||||||
SELECT
|
|
||||||
a.id,
|
|
||||||
a.user_id AS userId,
|
|
||||||
e.nickname AS userName,
|
|
||||||
a.dept_id AS deptId,
|
|
||||||
e.name AS deptName,
|
|
||||||
a.signing_date AS signingDate,
|
|
||||||
a.expiration_date AS expirationDate,
|
|
||||||
a.contract_duration AS contractDuration,
|
|
||||||
e.signingCount,
|
|
||||||
a.status,
|
|
||||||
a.create_time AS createTime
|
|
||||||
FROM
|
|
||||||
system_labor_contract a,
|
|
||||||
(
|
|
||||||
SELECT
|
|
||||||
c.nickname,
|
|
||||||
d.name,
|
|
||||||
COUNT(1) as signingCount,
|
|
||||||
MAX( b.create_time ) AS create_time
|
|
||||||
FROM
|
|
||||||
system_labor_contract b,
|
|
||||||
system_users c,
|
|
||||||
system_dept d
|
|
||||||
WHERE
|
|
||||||
b.user_id = c.id
|
|
||||||
AND b.dept_id = d.id
|
|
||||||
<if test="reqVO.userName != null and reqVO.userName != ''">
|
|
||||||
AND c.nickname LIKE CONCAT('%', #{reqVO.userName}, '%')
|
|
||||||
</if>
|
|
||||||
<if test="reqVO.deptId != null">
|
|
||||||
AND b.deptId = #{deptId}
|
|
||||||
</if>
|
|
||||||
<if test="reqVO.signingDate != null and reqVO.signingDate.length > 0">
|
|
||||||
<if test="reqVO.signingDate[0] != null">
|
|
||||||
AND b.signing_date >= #{reqVO.signingDatee[0]}
|
|
||||||
</if>
|
|
||||||
<if test="reqVO.signingDate[1] != null">
|
|
||||||
AND b.signing_date <= #{reqVO.signingDate[1]}
|
|
||||||
</if>
|
|
||||||
</if>
|
|
||||||
<if test="reqVO.expirationDate != null and reqVO.expirationDate.length > 0">
|
|
||||||
<if test="reqVO.expirationDate[0] != null">
|
|
||||||
AND b.expiration_date >= #{reqVO.expirationDate[0]}
|
|
||||||
</if>
|
|
||||||
<if test="reqVO.expirationDate[1] != null">
|
|
||||||
AND b.expiration_date <= #{reqVO.expirationDate[1]}
|
|
||||||
</if>
|
|
||||||
</if>
|
|
||||||
<if test="reqVO.status != null">
|
|
||||||
AND b.status = #{reqVO.status}
|
|
||||||
</if>
|
|
||||||
GROUP BY
|
|
||||||
b.user_id
|
|
||||||
) e
|
|
||||||
WHERE
|
|
||||||
a.create_time = e.create_time
|
|
||||||
</select>
|
|
||||||
</mapper>
|
</mapper>
|
Loading…
Reference in New Issue
Block a user