From bd6a7d8f1b3921fdc76fca99cf17715b920c1354 Mon Sep 17 00:00:00 2001 From: furongxin <419481438@qq.com> Date: Fri, 20 Sep 2024 19:56:45 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=B3=E5=8A=A8=E5=90=88=E5=90=8C=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=E7=8A=B6=E6=80=81=E5=8F=8A=E6=96=87=E4=BB=B6=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E5=AD=97=E6=AE=B5=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 更新劳动合同模块,调整状态字段定义,使其符合最新业务逻辑。 - 变更文件上传相关VO类,增加文件类型描述字段,优化文件信息存储结构。 - 在LaborContractController中集成用户和服务部门信息,优化劳动合同数据展示。- 在LaborContractServiceImpl中调整合同到期时间和初始状态设置,实现业务流程自动化。 - 调整LaborContractMapper及其XML文件,以支持新的业务逻辑和数据结构。这些变更提升了系统的数据一致性和用户体验,同时也增强了系统的可维护性和扩展性。 修复管理员用户分页查询逻辑以处理最新劳动合同 修复了管理员用户分页查询中劳动合同相关的问题。此更改通过调整SQL查询以正确关联用户表和最新的劳动合同,确保劳动合同的准确记录。此外,修正了时间范围查询的字段引用以提高查询的准确性。 --- .../LaborContractController.java | 21 +++++++++++--- .../laborcontract/vo/LaborContractRespVO.java | 5 ++-- .../vo/LaborContractSaveReqVO.java | 5 ++-- .../admin/laborcontract/vo/UploadFile.java | 3 ++ .../laborcontract/LaborContractDO.java | 3 +- .../laborcontract/LaborContractMapper.java | 12 ++++---- .../dal/mysql/user/AdminUserMapper.java | 28 +++++++++++++------ .../LaborContractServiceImpl.java | 6 ++-- .../laborcontract/LaborContractMapper.xml | 15 ++++++++++ 9 files changed, 69 insertions(+), 29 deletions(-) diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/laborcontract/LaborContractController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/laborcontract/LaborContractController.java index cf0b8476..f84a4899 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/laborcontract/LaborContractController.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/laborcontract/LaborContractController.java @@ -3,8 +3,6 @@ package cn.iocoder.yudao.module.system.controller.admin.laborcontract; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageResult; 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.LaborContractRespVO; import cn.iocoder.yudao.module.system.controller.admin.laborcontract.vo.LaborContractSaveReqVO; @@ -23,7 +21,6 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.validation.Valid; - import java.util.List; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; @@ -37,6 +34,12 @@ public class LaborContractController { @Resource private LaborContractService laborContractService; + @Resource + private AdminUserService userService; + + @Resource + private DeptService deptService; + @PostMapping("/create") @Operation(summary = "创建劳动合同管理") @PreAuthorize("@ss.hasPermission('system:labor-contract:create')") @@ -78,7 +81,17 @@ public class LaborContractController { List laborContracts = laborContractService.getHistoryList(userId); - return success(BeanUtils.toBean(laborContracts, LaborContractRespVO.class)); + // 拼接数据 + AdminUserDO userDO = userService.getUser(userId); + DeptDO deptDO = deptService.getDept(userDO.getDeptId()); + + List respVOS = BeanUtils.toBean(laborContracts, LaborContractRespVO.class); + respVOS.forEach(item -> { + item.setUserName(userDO.getNickname()); + item.setDeptName(deptDO.getName()); + }); + + return success(respVOS); } @GetMapping("/page") diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/laborcontract/vo/LaborContractRespVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/laborcontract/vo/LaborContractRespVO.java index 75393f2d..b8e469f4 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/laborcontract/vo/LaborContractRespVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/laborcontract/vo/LaborContractRespVO.java @@ -1,6 +1,5 @@ package cn.iocoder.yudao.module.system.controller.admin.laborcontract.vo; -import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.upload.UploadUserFile; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -42,12 +41,12 @@ public class LaborContractRespVO { @Schema(description = "试用期时间(月)", example = "3") private Integer probationPeriodTime; - @Schema(description = "状态 0待签 1已签 2过期", example = "0") + @Schema(description = "状态 0待签 1过期 2已签 3离职", example = "0") private Integer status; @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) private LocalDateTime createTime; @Schema(description = "上传文件", requiredMode = Schema.RequiredMode.REQUIRED) - private List fileItems; + private List fileItems; } \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/laborcontract/vo/LaborContractSaveReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/laborcontract/vo/LaborContractSaveReqVO.java index 32820c7c..3604ef2b 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/laborcontract/vo/LaborContractSaveReqVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/laborcontract/vo/LaborContractSaveReqVO.java @@ -1,6 +1,5 @@ package cn.iocoder.yudao.module.system.controller.admin.laborcontract.vo; -import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.upload.UploadUserFile; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -34,9 +33,9 @@ public class LaborContractSaveReqVO { @Schema(description = "试用期时间(月)", example = "3") private Integer probationPeriodTime; - @Schema(description = "状态 0待签 1已签 2过期", example = "0") + @Schema(description = "状态 0待签 1过期 2已签 3离职", example = "0") private Integer status; @Schema(description = "上传文件", requiredMode = Schema.RequiredMode.REQUIRED) - private List fileItems; + private List fileItems; } \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/laborcontract/vo/UploadFile.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/laborcontract/vo/UploadFile.java index f74b0109..723b9c14 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/laborcontract/vo/UploadFile.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/laborcontract/vo/UploadFile.java @@ -14,4 +14,7 @@ public class UploadFile { @Schema(description = "文件URL", requiredMode = Schema.RequiredMode.REQUIRED, example = "http://xxx.xxx/xx/xx/123.jpgss") private String url; + + @Schema(description = "文件类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "jpg") + private String fileType; } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/laborcontract/LaborContractDO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/laborcontract/LaborContractDO.java index c57377f8..402911c6 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/laborcontract/LaborContractDO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/laborcontract/LaborContractDO.java @@ -2,7 +2,6 @@ package cn.iocoder.yudao.module.system.dal.dataobject.laborcontract; 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 com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; @@ -17,7 +16,7 @@ import java.util.List; * * @author 符溶馨 */ -@TableName("system_labor_contract") +@TableName(value = "system_labor_contract", autoResultMap = true) @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/laborcontract/LaborContractMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/laborcontract/LaborContractMapper.java index d84175df..b05ba555 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/laborcontract/LaborContractMapper.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/laborcontract/LaborContractMapper.java @@ -2,17 +2,12 @@ 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.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.LaborContractRespVO; +import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore; +import cn.iocoder.yudao.module.system.controller.admin.file.vo.FileRespVO; 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 org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; -import javax.annotation.Resource; import java.util.List; /** @@ -29,4 +24,7 @@ public interface LaborContractMapper extends BaseMapperX { .eqIfPresent(LaborContractDO::getUserId, userId) .orderByDesc(LaborContractDO::getCreateTime)); } + + @TenantIgnore + List selectFileByUserId(@Param("mobile") String mobile); } \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/AdminUserMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/AdminUserMapper.java index 55599af4..1ab40c3d 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/AdminUserMapper.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/AdminUserMapper.java @@ -12,7 +12,6 @@ import cn.iocoder.yudao.module.system.controller.admin.user.vo.factoryUser.Facto import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserPageReqVO; import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserRespVO; import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserSimpleRespVO; -import cn.iocoder.yudao.module.system.dal.dataobject.assets.AssetsTypeDO; import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO; import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -135,18 +134,31 @@ public interface AdminUserMapper extends BaseMapperX { " signing_date AS signingDate,\n" + " expiration_date AS expirationDate,\n" + " contract_duration AS contractDuration,\n" + + " probation_period_time AS probationPeriodTime,\n" + " status,\n" + - " MAX( create_time ) AS createTime\n" + + " create_time AS createTime,\n" + " FROM\n" + - " system_labor_contract\n" + + " system_labor_contract lc\n" + + " INNER JOIN (SELECT\n" + + " user_id AS userId,\n" + + " MAX(create_time) AS max_create_time\n" + + " FROM\n" + + " system_labor_contract\n" + + " WHERE\n" + + " deleted = 0\n" + + " GROUP BY user_id) max\n" + " WHERE\n" + - " deleted = 0\n" + - " GROUP BY\n" + - " id) a on a.id = t.id"); + " lc.user_id = max.userId\n" + + " AND lc.create_time = max.max_create_time) a on a.user_id = t.id"); + queryWrapper.eq(AdminUserDO::getUserType, 1); queryWrapper.likeIfPresent(AdminUserDO::getNickname, pageReqVO.getUserName()); queryWrapper.eqIfPresent(AdminUserDO::getDeptId, pageReqVO.getDeptId()); - queryWrapper.between(Objects.nonNull(pageReqVO.getSigningDate()), "a.signingDate", pageReqVO.getSigningDate()[0], pageReqVO.getSigningDate()[1]); - queryWrapper.between(Objects.nonNull(pageReqVO.getExpirationDate()), "a.expirationDate", pageReqVO.getExpirationDate()[0], pageReqVO.getExpirationDate()[1]); + if (Objects.nonNull(pageReqVO.getSigningDate())) { + queryWrapper.between("a.signing_date", pageReqVO.getSigningDate()[0], pageReqVO.getSigningDate()[1]); + } + if (Objects.nonNull(pageReqVO.getExpirationDate())) { + queryWrapper.between("a.expiration_date", pageReqVO.getExpirationDate()[0], pageReqVO.getExpirationDate()[1]); + } queryWrapper.eq(Objects.nonNull(pageReqVO.getStatus()),"a.status", pageReqVO.getStatus()); queryWrapper.groupBy(AdminUserDO::getId); queryWrapper.orderByAsc("a.status"); diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/laborcontract/LaborContractServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/laborcontract/LaborContractServiceImpl.java index 29e242d2..21728fd6 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/laborcontract/LaborContractServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/laborcontract/LaborContractServiceImpl.java @@ -5,7 +5,6 @@ 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.LaborContractRespVO; 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.mysql.laborcontract.LaborContractMapper; import cn.iocoder.yudao.module.system.dal.mysql.user.AdminUserMapper; @@ -15,7 +14,6 @@ import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; - import java.util.List; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; @@ -40,7 +38,11 @@ public class LaborContractServiceImpl implements LaborContractService { public Long createLaborContract(LaborContractSaveReqVO createReqVO) { // 插入 LaborContractDO laborContract = BeanUtils.toBean(createReqVO, LaborContractDO.class); + // 设置到期时间 + laborContract.setExpirationDate(laborContract.getSigningDate().plusYears(laborContract.getContractDuration())); + laborContract.setStatus(2); laborContractMapper.insert(laborContract); + // 返回 return laborContract.getId(); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/laborcontract/LaborContractMapper.xml b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/laborcontract/LaborContractMapper.xml index 506b94d8..03329061 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/laborcontract/LaborContractMapper.xml +++ b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/laborcontract/LaborContractMapper.xml @@ -8,4 +8,19 @@ 代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。 文档可见:https://www.iocoder.cn/MyBatis/x-plugins/ --> + \ No newline at end of file