From 9ae3e93768ad930f3f69095f123ab314a8feab9f Mon Sep 17 00:00:00 2001 From: furongxin <419481438@qq.com> Date: Fri, 27 Sep 2024 22:35:45 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=94=A8=E6=88=B7=E7=94=9F?= =?UTF-8?q?=E6=97=A5=E4=BF=A1=E6=81=AF=E5=88=86=E9=A1=B5=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E5=8F=8A=E8=B5=84=E4=BA=A7=E9=A2=86=E7=94=A8?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增了用户生日信息的分页查询功能,允许按月份筛选即将过生日的用户。同时,实现了资产领用管理模块,包含资产领用的新增、更新、删除和分页查询等功能。用户生日信息的status字段现在支持表示今日和本月生日的用户。在资产领用模块中,引入了新的数据对象、Mapper、Service和Controller实现。 --- .../api/assetreceive/AssetReceiveApiImpl.java | 29 +++++++ .../assetreceive/AssetReceiveController.java | 72 +++++++++++++++++ .../vo/AssetReceivePageReqVO.java | 57 +++++++++++++ .../assetreceive/vo/AssetReceiveRespVO.java | 64 +++++++++++++++ .../vo/AssetReceiveSaveReqVO.java | 51 ++++++++++++ .../controller/admin/user/UserController.java | 21 +++++ .../user/vo/user/UserBirthdayPageReqVO.java | 26 ++++++ .../user/vo/user/UserBirthdayRespVO.java | 39 +++++++++ .../assetreceive/AssetReceiveDO.java | 70 ++++++++++++++++ .../assetreceive/AssetReceiveMapper.java | 33 ++++++++ .../dal/mysql/user/AdminUserMapper.java | 35 +++++++- .../assetreceive/AssetReceiveService.java | 64 +++++++++++++++ .../assetreceive/AssetReceiveServiceImpl.java | 81 +++++++++++++++++++ .../system/service/user/AdminUserService.java | 8 ++ .../service/user/AdminUserServiceImpl.java | 18 +++++ 15 files changed, 665 insertions(+), 3 deletions(-) create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/assetreceive/AssetReceiveApiImpl.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/assetreceive/AssetReceiveController.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/assetreceive/vo/AssetReceivePageReqVO.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/assetreceive/vo/AssetReceiveRespVO.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/assetreceive/vo/AssetReceiveSaveReqVO.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserBirthdayPageReqVO.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserBirthdayRespVO.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/assetreceive/AssetReceiveDO.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/assetreceive/AssetReceiveMapper.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/assetreceive/AssetReceiveService.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/assetreceive/AssetReceiveServiceImpl.java diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/assetreceive/AssetReceiveApiImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/assetreceive/AssetReceiveApiImpl.java new file mode 100644 index 00000000..2d2fb33e --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/assetreceive/AssetReceiveApiImpl.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.module.system.api.assetreceive; + +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.system.api.assetreceive.dto.AssetReceiveSaveDTO; +import cn.iocoder.yudao.module.system.controller.admin.assetreceive.vo.AssetReceiveSaveReqVO; +import cn.iocoder.yudao.module.system.service.assetreceive.AssetReceiveService; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.List; + +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@RestController // 提供 RESTful API 接口,给 Feign 调用 +@Validated +public class AssetReceiveApiImpl implements AssetReceiveApi{ + + @Resource + private AssetReceiveService assetReceiveService; + + @Override + public CommonResult createReceive(List saveDTO) { + + List assetReceives = BeanUtils.toBean(saveDTO, AssetReceiveSaveReqVO.class); + return success(assetReceiveService.createAssetReceives(assetReceives)); + } +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/assetreceive/AssetReceiveController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/assetreceive/AssetReceiveController.java new file mode 100644 index 00000000..92e8f04a --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/assetreceive/AssetReceiveController.java @@ -0,0 +1,72 @@ +package cn.iocoder.yudao.module.system.controller.admin.assetreceive; + +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.controller.admin.assetreceive.vo.AssetReceivePageReqVO; +import cn.iocoder.yudao.module.system.controller.admin.assetreceive.vo.AssetReceiveRespVO; +import cn.iocoder.yudao.module.system.controller.admin.assetreceive.vo.AssetReceiveSaveReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.assetreceive.AssetReceiveDO; +import cn.iocoder.yudao.module.system.service.assetreceive.AssetReceiveService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; + +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@Tag(name = "管理后台 - 资产领用") +@RestController +@RequestMapping("/system/asset-receive") +@Validated +public class AssetReceiveController { + + @Resource + private AssetReceiveService assetReceiveService; + + @PostMapping("/create") + @Operation(summary = "创建资产领用") + @PreAuthorize("@ss.hasPermission('system:asset-receive:create')") + public CommonResult createAssetReceive(@Valid @RequestBody AssetReceiveSaveReqVO createReqVO) { + return success(assetReceiveService.createAssetReceive(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新资产领用") + @PreAuthorize("@ss.hasPermission('system:asset-receive:update')") + public CommonResult updateAssetReceive(@Valid @RequestBody AssetReceiveSaveReqVO updateReqVO) { + assetReceiveService.updateAssetReceive(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除资产领用") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('system:asset-receive:delete')") + public CommonResult deleteAssetReceive(@RequestParam("id") Long id) { + assetReceiveService.deleteAssetReceive(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得资产领用") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('system:asset-receive:query')") + public CommonResult getAssetReceive(@RequestParam("id") Long id) { + AssetReceiveDO assetReceive = assetReceiveService.getAssetReceive(id); + return success(BeanUtils.toBean(assetReceive, AssetReceiveRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得资产领用分页") + @PreAuthorize("@ss.hasPermission('system:asset-receive:query')") + public CommonResult> getAssetReceivePage(@Valid AssetReceivePageReqVO pageReqVO) { + PageResult pageResult = assetReceiveService.getAssetReceivePage(pageReqVO); + return success(BeanUtils.toBean(pageResult, AssetReceiveRespVO.class)); + } +} \ 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/assetreceive/vo/AssetReceivePageReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/assetreceive/vo/AssetReceivePageReqVO.java new file mode 100644 index 00000000..7a77b67f --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/assetreceive/vo/AssetReceivePageReqVO.java @@ -0,0 +1,57 @@ +package cn.iocoder.yudao.module.system.controller.admin.assetreceive.vo; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDate; +import java.time.LocalDateTime; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 资产领用分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class AssetReceivePageReqVO extends PageParam { + + @Schema(description = "领用人的用户编号", example = "146") + private Long userId; + + @Schema(description = "领用人的部门编号", example = "128") + private Long deptId; + + @Schema(description = "分配人的用户编号") + private Long receiveUserId; + + @Schema(description = "资产编号") + private String assetsNo; + + @Schema(description = "资产类型编号") + private Long assetsTypeId; + + @Schema(description = "数量") + private Integer num; + + @Schema(description = "申请日期") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDate[] applyDate; + + @Schema(description = "分配日期") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDate[] allocationDate; + + @Schema(description = "领用状态 | 0待领用 1采购中 2已领用 ", example = "0") + private Integer status; + + @Schema(description = "附件信息") + private String fileItems; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ 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/assetreceive/vo/AssetReceiveRespVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/assetreceive/vo/AssetReceiveRespVO.java new file mode 100644 index 00000000..b32d4d21 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/assetreceive/vo/AssetReceiveRespVO.java @@ -0,0 +1,64 @@ +package cn.iocoder.yudao.module.system.controller.admin.assetreceive.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDate; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 资产领用 Response VO") +@Data +@ExcelIgnoreUnannotated +public class AssetReceiveRespVO { + + @Schema(description = "资产领用表单主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @ExcelProperty("资产领用表单主键") + private Long id; + + @Schema(description = "领用人的用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "146") + @ExcelProperty("领用人的用户编号") + private Long userId; + + @Schema(description = "领用人的部门编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "128") + @ExcelProperty("领用人的部门编号") + private Long deptId; + + @Schema(description = "分配人的用户编号", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("分配人的用户编号") + private Long receiveUserId; + + @Schema(description = "资产编号") + @ExcelProperty("资产编号") + private String assetsNo; + + @Schema(description = "资产类型编号", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("资产类型编号") + private Long assetsTypeId; + + @Schema(description = "数量", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("数量") + private Integer num; + + @Schema(description = "申请日期") + @ExcelProperty("申请日期") + private LocalDate applyDate; + + @Schema(description = "分配日期") + @ExcelProperty("分配日期") + private LocalDate allocationDate; + + @Schema(description = "领用状态 | 0待领用 1采购中 2已领用 ", example = "0") + @ExcelProperty("领用状态 | 0待领用 1采购中 2已领用 ") + private Integer status; + + @Schema(description = "附件信息") + @ExcelProperty("附件信息") + private String fileItems; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ 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/assetreceive/vo/AssetReceiveSaveReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/assetreceive/vo/AssetReceiveSaveReqVO.java new file mode 100644 index 00000000..6709c608 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/assetreceive/vo/AssetReceiveSaveReqVO.java @@ -0,0 +1,51 @@ +package cn.iocoder.yudao.module.system.controller.admin.assetreceive.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.time.LocalDate; + +@Schema(description = "管理后台 - 资产领用新增/修改 Request VO") +@Data +public class AssetReceiveSaveReqVO { + + @Schema(description = "资产领用表单主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + private Long id; + + @Schema(description = "领用人的用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "146") + @NotNull(message = "领用人的用户编号不能为空") + private Long userId; + + @Schema(description = "领用人的部门编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "128") + @NotNull(message = "领用人的部门编号不能为空") + private Long deptId; + + @Schema(description = "分配人的用户编号", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "分配人的用户编号不能为空") + private Long receiveUserId; + + @Schema(description = "资产编号") + private String assetsNo; + + @Schema(description = "资产类型编号", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "资产类型编号不能为空") + private Long assetsTypeId; + + @Schema(description = "数量", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "数量不能为空") + private Integer num; + + @Schema(description = "申请日期") + private LocalDate applyDate; + + @Schema(description = "分配日期") + private LocalDate allocationDate; + + @Schema(description = "领用状态 | 0待领用 1采购中 2已领用 ", example = "0") + private Integer status; + + @Schema(description = "附件信息") + private String 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/user/UserController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/UserController.java index 001d170d..12714233 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/UserController.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/UserController.java @@ -35,6 +35,8 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.*; import java.util.stream.Collectors; @@ -295,6 +297,25 @@ public class UserController { return success(BeanUtils.toBean(user, UserRespVO.class)); } + @PostMapping("/getUserListByBirthday") + @Operation(summary = "获得当天以及当月即将过生日的用户信息") + @PreAuthorize("@ss.hasPermission('system:user:query')") + public CommonResult> getUserListByBirthday(@RequestBody UserBirthdayPageReqVO pageReqVO) { + + String time = LocalDateTime.now().format(DateTimeFormatter.ofPattern("MM-dd")); + + PageResult pageResult = userService.getUserListByBirthday(pageReqVO); + pageResult.getList().forEach(data -> { + if (data.getBirthday().format(DateTimeFormatter.ofPattern("MM-dd")).equals(time)) { + data.setStatus(1); + }else if (data.getBirthday().getMonthValue() == LocalDateTime.now().getMonthValue()){ + data.setStatus(2); + } + }); + + return success(pageResult); + } + @GetMapping("/export") @Operation(summary = "导出用户") @PreAuthorize("@ss.hasPermission('system:user:export')") diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserBirthdayPageReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserBirthdayPageReqVO.java new file mode 100644 index 00000000..f444fdb5 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserBirthdayPageReqVO.java @@ -0,0 +1,26 @@ +package cn.iocoder.yudao.module.system.controller.admin.user.vo.user; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +@Schema(description = "管理后台 - 用户生日信息分页 Request VO") +@Data +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class UserBirthdayPageReqVO extends PageParam { + + @Schema(description = "用户账号,模糊匹配", example = "yudao") + private String name; + + @Schema(description = "部门编号,同时筛选子部门", example = "1024") + private Long deptId; + + @Schema(description = "月份", example = "1024") + private Integer month; + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserBirthdayRespVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserBirthdayRespVO.java new file mode 100644 index 00000000..bd3b3fd5 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserBirthdayRespVO.java @@ -0,0 +1,39 @@ +package cn.iocoder.yudao.module.system.controller.admin.user.vo.user; + +import cn.iocoder.yudao.framework.common.util.date.DateUtils; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDate; + +@Schema(description = "管理后台 - 用户生日信息 Response VO") +@Data +public class UserBirthdayRespVO { + + @Schema(description = "用户编号", example = "1") + private Long userId; + + @Schema(description = "部门名称", example = "研发部") + private String deptName; + + @Schema(description = "岗位") + private String positionName; + + @Schema(description = "职称") + private String postName; + + @Schema(description = "用户昵称", example = "芋道") + private String nickname; + + @Schema(description = "入职日期", example = "2") + @DateTimeFormat(pattern = DateUtils.FORMAT_YEAR_MONTH_DAY) + private LocalDate entryDate; + + @Schema(description = "生日", example = "2022-02-02") + @DateTimeFormat(pattern = DateUtils.FORMAT_YEAR_MONTH_DAY) + private LocalDate birthday; + + @Schema(description = "状态 | 1:今日生日 2:本月生日", example = "1") + private Integer status; +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/assetreceive/AssetReceiveDO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/assetreceive/AssetReceiveDO.java new file mode 100644 index 00000000..dac23d5c --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/assetreceive/AssetReceiveDO.java @@ -0,0 +1,70 @@ +package cn.iocoder.yudao.module.system.dal.dataobject.assetreceive; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.*; + +import java.time.LocalDate; + +/** + * 资产领用 DO + * + * @author 符溶馨 + */ +@TableName("system_asset_receive") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class AssetReceiveDO extends BaseDO { + + /** + * 资产领用表单主键 + */ + @TableId + private Long id; + /** + * 领用人的用户编号 + */ + private Long userId; + /** + * 领用人的部门编号 + */ + private Long deptId; + /** + * 分配人的用户编号 + */ + private Long receiveUserId; + /** + * 资产编号 + */ + private String assetsNo; + /** + * 资产类型编号 + */ + private Long assetsTypeId; + /** + * 数量 + */ + private Integer num; + /** + * 申请日期 + */ + private LocalDate applyDate; + /** + * 分配日期 + */ + private LocalDate allocationDate; + /** + * 领用状态 | 0待领用 1采购中 2已领用 + */ + private Integer status; + /** + * 附件信息 + */ + private String 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/dal/mysql/assetreceive/AssetReceiveMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/assetreceive/AssetReceiveMapper.java new file mode 100644 index 00000000..30ca9c17 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/assetreceive/AssetReceiveMapper.java @@ -0,0 +1,33 @@ +package cn.iocoder.yudao.module.system.dal.mysql.assetreceive; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.system.controller.admin.assetreceive.vo.AssetReceivePageReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.assetreceive.AssetReceiveDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 资产领用 Mapper + * + * @author 符溶馨 + */ +@Mapper +public interface AssetReceiveMapper extends BaseMapperX { + + default PageResult selectPage(AssetReceivePageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(AssetReceiveDO::getUserId, reqVO.getUserId()) + .eqIfPresent(AssetReceiveDO::getDeptId, reqVO.getDeptId()) + .eqIfPresent(AssetReceiveDO::getReceiveUserId, reqVO.getReceiveUserId()) + .eqIfPresent(AssetReceiveDO::getAssetsNo, reqVO.getAssetsNo()) + .eqIfPresent(AssetReceiveDO::getAssetsTypeId, reqVO.getAssetsTypeId()) + .betweenIfPresent(AssetReceiveDO::getApplyDate, reqVO.getApplyDate()) + .betweenIfPresent(AssetReceiveDO::getAllocationDate, reqVO.getAllocationDate()) + .eqIfPresent(AssetReceiveDO::getStatus, reqVO.getStatus()) + .betweenIfPresent(AssetReceiveDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(AssetReceiveDO::getStatus) + .orderByDesc(AssetReceiveDO::getCreateTime)); + } + +} \ 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 9feeb1e3..78b5b44f 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 @@ -9,15 +9,14 @@ import cn.iocoder.yudao.module.system.controller.admin.laborcontract.vo.LaborCon import cn.iocoder.yudao.module.system.controller.admin.laborcontract.vo.LaborContractRespVO; import cn.iocoder.yudao.module.system.controller.admin.user.dto.UserPageDTO; import cn.iocoder.yudao.module.system.controller.admin.user.vo.factoryUser.FactoryUserPageReqVO; -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.controller.admin.user.vo.user.*; 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; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.time.LocalDate; import java.util.Collection; import java.util.List; import java.util.Objects; @@ -166,4 +165,34 @@ public interface AdminUserMapper extends BaseMapperX { return selectJoinPage(mpPage, LaborContractRespVO.class, queryWrapper); } + + default PageResult selectUserPageByBirthday(UserBirthdayPageReqVO pageReqVO, + List deptIds, + LocalDate date) { + + MPJLambdaWrapperX queryWrapper = new MPJLambdaWrapperX(); + queryWrapper.selectAs(AdminUserDO::getId, UserBirthdayRespVO::getUserId) + .selectAs(AdminUserDO::getNickname, UserBirthdayRespVO::getNickname) + .selectAs(AdminUserDO::getBirthdayDay, UserBirthdayRespVO::getBirthday) + .leftJoin(AdminUserDO.class, AdminUserDO::getId, AdminUserDO::getId) + .selectAs("d.name", UserBirthdayRespVO::getDeptName) + .selectAs("p.name", UserBirthdayRespVO::getPostName) + .selectAs("ps.name", UserBirthdayRespVO::getPositionName) + .leftJoin("system_dept d on t.dept_id = d.id and d.deleted = 0") + .leftJoin("system_post p on LOCATE(p.id, t.post_ids) and p.deleted = 0") + .leftJoin("system_position ps on ps.id = t.position_id and ps.deleted = 0"); + + queryWrapper.eq(AdminUserDO::getStatus, CommonStatusEnum.ENABLE.getStatus()); + queryWrapper.eq(AdminUserDO::getUserType, 1); + queryWrapper.likeIfPresent(AdminUserDO::getNickname, pageReqVO.getName()); + queryWrapper.inIfPresent(AdminUserDO::getDeptId, deptIds); + if ( (pageReqVO.getName() == null && pageReqVO.getDeptId() == null) || pageReqVO.getMonth() != null) { + queryWrapper.eq("MONTH(t.birthday_day)",date.getMonthValue()); + queryWrapper.ge("DAY(t.birthday_day)", date.getDayOfMonth()); + } + queryWrapper.groupBy("t.id"); + queryWrapper.orderByAsc("t.birthday_day"); + + return selectJoinPage(pageReqVO, UserBirthdayRespVO.class, queryWrapper); + } } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/assetreceive/AssetReceiveService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/assetreceive/AssetReceiveService.java new file mode 100644 index 00000000..dd6b18af --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/assetreceive/AssetReceiveService.java @@ -0,0 +1,64 @@ +package cn.iocoder.yudao.module.system.service.assetreceive; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.system.controller.admin.assetreceive.vo.AssetReceivePageReqVO; +import cn.iocoder.yudao.module.system.controller.admin.assetreceive.vo.AssetReceiveSaveReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.assetreceive.AssetReceiveDO; + +import javax.validation.Valid; +import java.util.List; + +/** + * 资产领用 Service 接口 + * + * @author 符溶馨 + */ +public interface AssetReceiveService { + + /** + * 创建资产领用 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createAssetReceive(@Valid AssetReceiveSaveReqVO createReqVO); + + /** + * 批量创建资产领用 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Boolean createAssetReceives(@Valid List createReqVO); + + /** + * 更新资产领用 + * + * @param updateReqVO 更新信息 + */ + void updateAssetReceive(@Valid AssetReceiveSaveReqVO updateReqVO); + + /** + * 删除资产领用 + * + * @param id 编号 + */ + void deleteAssetReceive(Long id); + + /** + * 获得资产领用 + * + * @param id 编号 + * @return 资产领用 + */ + AssetReceiveDO getAssetReceive(Long id); + + /** + * 获得资产领用分页 + * + * @param pageReqVO 分页查询 + * @return 资产领用分页 + */ + PageResult getAssetReceivePage(AssetReceivePageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/assetreceive/AssetReceiveServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/assetreceive/AssetReceiveServiceImpl.java new file mode 100644 index 00000000..8b6d0851 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/assetreceive/AssetReceiveServiceImpl.java @@ -0,0 +1,81 @@ +package cn.iocoder.yudao.module.system.service.assetreceive; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.system.controller.admin.assetreceive.vo.AssetReceivePageReqVO; +import cn.iocoder.yudao.module.system.controller.admin.assetreceive.vo.AssetReceiveSaveReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.assetreceive.AssetReceiveDO; +import cn.iocoder.yudao.module.system.dal.mysql.assetreceive.AssetReceiveMapper; +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; +import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.ASSET_RECEIVE_NOT_EXISTS; + +/** + * 资产领用 Service 实现类 + * + * @author 符溶馨 + */ +@Service +@Validated +public class AssetReceiveServiceImpl implements AssetReceiveService { + + @Resource + private AssetReceiveMapper assetReceiveMapper; + + @Override + public Long createAssetReceive(AssetReceiveSaveReqVO createReqVO) { + // 插入 + AssetReceiveDO assetReceive = BeanUtils.toBean(createReqVO, AssetReceiveDO.class); + assetReceiveMapper.insert(assetReceive); + // 返回 + return assetReceive.getId(); + } + + @Override + public Boolean createAssetReceives(List createReqVO) { + + List assetReceives = BeanUtils.toBean(createReqVO, AssetReceiveDO.class); + assetReceiveMapper.insertBatch(assetReceives); + + return true; + } + + @Override + public void updateAssetReceive(AssetReceiveSaveReqVO updateReqVO) { + // 校验存在 + validateAssetReceiveExists(updateReqVO.getId()); + // 更新 + AssetReceiveDO updateObj = BeanUtils.toBean(updateReqVO, AssetReceiveDO.class); + assetReceiveMapper.updateById(updateObj); + } + + @Override + public void deleteAssetReceive(Long id) { + // 校验存在 + validateAssetReceiveExists(id); + // 删除 + assetReceiveMapper.deleteById(id); + } + + private void validateAssetReceiveExists(Long id) { + if (assetReceiveMapper.selectById(id) == null) { + throw exception(ASSET_RECEIVE_NOT_EXISTS); + } + } + + @Override + public AssetReceiveDO getAssetReceive(Long id) { + return assetReceiveMapper.selectById(id); + } + + @Override + public PageResult getAssetReceivePage(AssetReceivePageReqVO pageReqVO) { + return assetReceiveMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserService.java index 9dbd3527..49195db9 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserService.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserService.java @@ -369,4 +369,12 @@ public interface AdminUserService { * @return 用户列表 */ List getUserListByUserStaffing(Integer userStaffing); + + /** + * 获得指定日期过生日的用户信息分页 + * + * @param pageReqVO 分页信息 + * @return 用户信息分页 + */ + PageResult getUserListByBirthday(UserBirthdayPageReqVO pageReqVO); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java index 4046deb4..c8be89b7 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java @@ -47,6 +47,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.io.IOException; import java.io.InputStream; +import java.time.LocalDate; import java.time.LocalDateTime; import java.util.*; import java.util.stream.Collectors; @@ -752,4 +753,21 @@ public class AdminUserServiceImpl implements AdminUserService { return userMapper.selectList(AdminUserDO::getUserStaffing, userStaffing); } + + @Override + public PageResult getUserListByBirthday(UserBirthdayPageReqVO pageReqVO) { + + List deptIds = new ArrayList<>(); + if (pageReqVO.getDeptId() != null) { + deptIds = convertList(deptService.getChildDept(pageReqVO.getDeptId()), DeptDO::getId); + } + + LocalDate date = LocalDate.now(); + if (pageReqVO.getMonth() != null) { + // 获取该月份的第一天 + date = LocalDate.of(LocalDate.now().getYear(), pageReqVO.getMonth(), 1); + } + + return userMapper.selectUserPageByBirthday(pageReqVO, deptIds, date); + } }