diff --git a/yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/ErrorCodeConstants.java b/yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/ErrorCodeConstants.java index fd7d6a08..f8522b7f 100644 --- a/yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/ErrorCodeConstants.java +++ b/yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/ErrorCodeConstants.java @@ -41,6 +41,7 @@ public interface ErrorCodeConstants { ErrorCode OA_PETITION_NOT_EXISTS = new ErrorCode(1_009_001_115, "签呈申请不存在"); ErrorCode OA_BUSINESS_CARD_NOT_EXISTS = new ErrorCode(1_009_001_116, "名片定制申请不存在"); ErrorCode OA_HIRE_NOT_EXISTS = new ErrorCode(1_009_001_117, "招聘申请不存在"); + ErrorCode OA_BUSINESS_HOSPITALITY_NOT_EXISTS = new ErrorCode(1_009_001_118, "商务招待申请不存在"); // ========== 流程模型 1-009-002-000 ========== ErrorCode MODEL_KEY_EXISTS = new ErrorCode(1_009_002_000, "已经存在流程标识为【{}】的流程"); diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOABusinessHospitalityController.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOABusinessHospitalityController.java new file mode 100644 index 00000000..9128737b --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOABusinessHospitalityController.java @@ -0,0 +1,61 @@ +package cn.iocoder.yudao.module.bpm.controller.admin.oa; + +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.businessHospitality.BpmOABusinessHospitalityCreateReqVO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.businessHospitality.BpmOABusinessHospitalityRespVO; +import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOABusinessHospitalityDO; +import cn.iocoder.yudao.module.bpm.service.oa.BpmOABusinessHospitalityService; +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.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; +import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; + +/** + * OA 商务招待 Controller + * + * @author 符溶馨 + */ +@Tag(name = "管理后台 - OA 商务招待") +@RestController +@RequestMapping("/bpm/oa/business-hospitality") +@Validated +public class BpmOABusinessHospitalityController { + + @Resource + private BpmOABusinessHospitalityService bpmOABusinessHospitalityService; + + @PostMapping("/create") + @Operation(summary = "创建请求申请") + public CommonResult createBusinessHospitality(@Valid @RequestBody BpmOABusinessHospitalityCreateReqVO createReqVO) { + + return success(bpmOABusinessHospitalityService.createBusinessHospitality(getLoginUserId(), createReqVO)); + } + + @GetMapping("/get") + @Operation(summary = "获得名片定制申请") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + public CommonResult getBusinessHospitality(@RequestParam("id") Long id) { + + BpmOABusinessHospitalityDO bpmOABusinessHospitalityDO = bpmOABusinessHospitalityService.getBusinessHospitality(id); + + return success(BeanUtils.toBean(bpmOABusinessHospitalityDO, BpmOABusinessHospitalityRespVO.class)); + } + + @GetMapping("/getByProcessInstanceId") + @Operation(summary = "获得名片定制申请") + @Parameter(name = "processInstanceId", description = "流程实例编号", required = true, example = "1024") + public CommonResult getCashByProcessInstanceId(@RequestParam("processInstanceId") String processInstanceId) { + + BpmOABusinessHospitalityDO bpmOABusinessHospitalityDO = bpmOABusinessHospitalityService.getByProcessInstanceId(processInstanceId); + + return success(BeanUtils.toBean(bpmOABusinessHospitalityDO, BpmOABusinessHospitalityRespVO.class)); + } +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOAHireController.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOAHireController.java index 2c40ef59..71fd393e 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOAHireController.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOAHireController.java @@ -6,6 +6,10 @@ import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.hire.BpmOAHireCreateRe import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.hire.BpmOAHireRespVO; import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAHireDO; import cn.iocoder.yudao.module.bpm.service.oa.BpmOAHireService; +import cn.iocoder.yudao.module.system.api.dept.DeptApi; +import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO; +import cn.iocoder.yudao.module.system.api.position.PositionApi; +import cn.iocoder.yudao.module.system.api.position.dto.PositionDTO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; @@ -32,6 +36,12 @@ public class BpmOAHireController { @Resource private BpmOAHireService bpmOAHireService; + @Resource + private DeptApi deptApi; + + @Resource + private PositionApi positionApi; + @PostMapping("/create") @Operation(summary = "创建请求申请") public CommonResult createHire(@Valid @RequestBody BpmOAHireCreateReqVO createReqVO) { @@ -46,7 +56,7 @@ public class BpmOAHireController { BpmOAHireDO bpmOAHireDO = bpmOAHireService.getHire(id); - return success(BeanUtils.toBean(bpmOAHireDO, BpmOAHireRespVO.class)); + return success(setBpmOAHireRespVOFun(bpmOAHireDO)); } @GetMapping("/getByProcessInstanceId") @@ -56,6 +66,24 @@ public class BpmOAHireController { BpmOAHireDO bpmOAHireDO = bpmOAHireService.getByProcessInstanceId(processInstanceId); - return success(BeanUtils.toBean(bpmOAHireDO, BpmOAHireRespVO.class)); + return success(setBpmOAHireRespVOFun(bpmOAHireDO)); + } + + private BpmOAHireRespVO setBpmOAHireRespVOFun(BpmOAHireDO bpmOAHireDO) { + + BpmOAHireRespVO respVO = BeanUtils.toBean(bpmOAHireDO, BpmOAHireRespVO.class); + if (respVO != null) { + // 获取部门信息 + DeptRespDTO deptRespDTO = deptApi.getDept(bpmOAHireDO.getDemandDeptId()).getCheckedData(); + // 获取岗位信息 + PositionDTO positionDTO = positionApi.getPosition(bpmOAHireDO.getDemandPositionId()).getCheckedData(); + + // 设置需求部门名称 + respVO.setDemandDeptName(deptRespDTO.getName()); + // 设置岗位名称 + respVO.setDemandPositionName(positionDTO.getName()); + } + + return respVO; } } diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/businessCard/BpmOABusinessCardCreateReqVO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/businessCard/BpmOABusinessCardCreateReqVO.java index d7820613..63165df3 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/businessCard/BpmOABusinessCardCreateReqVO.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/businessCard/BpmOABusinessCardCreateReqVO.java @@ -10,7 +10,7 @@ import javax.validation.constraints.NotNull; import java.util.List; /** - * 现金支出 创建 Request VO + * 名片定制 创建 Request VO * * @author 符溶馨 */ diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/businessHospitality/BpmOABusinessHospitalityCreateReqVO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/businessHospitality/BpmOABusinessHospitalityCreateReqVO.java new file mode 100644 index 00000000..6fe76f00 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/businessHospitality/BpmOABusinessHospitalityCreateReqVO.java @@ -0,0 +1,61 @@ +package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.businessHospitality; + +import cn.iocoder.yudao.framework.common.pojo.UploadUserFile; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import javax.validation.constraints.NotNull; +import java.time.LocalDate; +import java.util.List; + +/** + * 商务招待 创建 Request VO + * + * @author 符溶馨 + */ +@Schema(description = "管理后台 - 商务招待 Request VO") +@Data +@EqualsAndHashCode() +@ToString(callSuper = true) +public class BpmOABusinessHospitalityCreateReqVO { + + @Schema(description = "招待事由", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "招待事由不能为空") + private String reason; + + @Schema(description = "客户单位") + @NotNull(message = "客户单位不能为空") + private String customerUnit; + + @Schema(description = "招待日期", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "招待日期不能为空") + private LocalDate entertainDate; + + @Schema(description = "招待地点") + private String entertainLocation; + + @Schema(description = "招待人员名单") + @NotNull(message = "招待人员名单不能为空") + private String staff; + + @Schema(description = "招待费用预算") + @NotNull(message = "招待费用预算不能为空") + private Integer costBudget; + + @Schema(description = "是否用车") + private Integer isCar; + + @Schema(description = "是否住宿") + private Integer isStay; + + @Schema(description = "流程实例编号") + private String processInstanceId; + + @Schema(description = "状态-参见 bpm_process_instance_result 枚举", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + private Integer result; + + @Schema(description = "上传文件", requiredMode = Schema.RequiredMode.REQUIRED) + private List fileItems; +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/businessHospitality/BpmOABusinessHospitalityRespVO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/businessHospitality/BpmOABusinessHospitalityRespVO.java new file mode 100644 index 00000000..ea71f62b --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/businessHospitality/BpmOABusinessHospitalityRespVO.java @@ -0,0 +1,54 @@ +package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.businessHospitality; + +import cn.iocoder.yudao.framework.common.pojo.UploadUserFile; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.BpmOABaseRespVO; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import javax.validation.constraints.NotNull; +import java.time.LocalDate; +import java.util.List; + +/** + * @author 符溶馨 + */ +@Schema(description = "管理后台 - 商务招待 请求Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class BpmOABusinessHospitalityRespVO extends BpmOABaseRespVO { + + @Schema(description = "招待事由", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "招待事由不能为空") + private String reason; + + @Schema(description = "客户单位") + @NotNull(message = "客户单位不能为空") + private String customerUnit; + + @Schema(description = "招待日期", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "招待日期不能为空") + private LocalDate entertainDate; + + @Schema(description = "招待地点") + private String entertainLocation; + + @Schema(description = "招待人员名单") + @NotNull(message = "招待人员名单不能为空") + private String staff; + + @Schema(description = "招待费用预算") + @NotNull(message = "招待费用预算不能为空") + private Integer costBudget; + + @Schema(description = "是否用车") + private Integer isCar; + + @Schema(description = "是否住宿") + private Integer isStay; + + @Schema(description = "上传文件", requiredMode = Schema.RequiredMode.REQUIRED) + private List fileItems; +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/hire/BpmOAHireCreateReqVO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/hire/BpmOAHireCreateReqVO.java index 465ce2d2..56c6f043 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/hire/BpmOAHireCreateReqVO.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/hire/BpmOAHireCreateReqVO.java @@ -7,6 +7,7 @@ import lombok.EqualsAndHashCode; import lombok.ToString; import javax.validation.constraints.NotNull; +import java.time.LocalDate; import java.util.List; /** @@ -32,9 +33,21 @@ public class BpmOAHireCreateReqVO { @NotNull(message = "需求岗位编号不能为空") private Long demandPositionId; - @Schema(description = "招聘性质 | 字典值", requiredMode = Schema.RequiredMode.REQUIRED) + @Schema(description = "招聘性质 | 字典值 bpm_hire nature", requiredMode = Schema.RequiredMode.REQUIRED) private Integer type; + @Schema(description = "招聘数量") + private Integer number; + + @Schema(description = "到岗日期") + private LocalDate arrivalDate; + + @Schema(description = "岗位职责") + private String jobResponsibilities; + + @Schema(description = "任职要求") + private String jobRequirements; + @Schema(description = "流程实例编号") private String processInstanceId; diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/hire/BpmOAHireRespVO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/hire/BpmOAHireRespVO.java index 399ec192..16a2c21e 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/hire/BpmOAHireRespVO.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/hire/BpmOAHireRespVO.java @@ -6,10 +6,14 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.ToString; +import org.springframework.format.annotation.DateTimeFormat; import javax.validation.constraints.NotNull; +import java.time.LocalDate; import java.util.List; +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY; + /** * @author 符溶馨 */ @@ -20,20 +24,36 @@ import java.util.List; public class BpmOAHireRespVO extends BpmOABaseRespVO { @Schema(description = "申请事由", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "申请事由不能为空") private String reason; @Schema(description = "需求部门编号", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "需求部门编号不能为空") private Long demandDeptId; + @Schema(description = "需求部门名称") + private String demandDeptName; + @Schema(description = "需求岗位编号") - @NotNull(message = "需求岗位编号不能为空") private Long demandPositionId; - @Schema(description = "招聘性质 | 字典值", requiredMode = Schema.RequiredMode.REQUIRED) + @Schema(description = "需求岗位名称") + private String demandPositionName; + + @Schema(description = "招聘性质 | 字典值") private Integer type; + @Schema(description = "招聘数量") + private Integer number; + + @Schema(description = "到岗日期") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY) + private String arrivalDate; + + @Schema(description = "岗位职责") + private String jobResponsibilities; + + @Schema(description = "任职要求") + private String jobRequirements; + @Schema(description = "流程实例编号") private String processInstanceId; diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOABusinessCardDO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOABusinessCardDO.java index da963def..e5f62e52 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOABusinessCardDO.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOABusinessCardDO.java @@ -26,7 +26,7 @@ import java.util.List; public class BpmOABusinessCardDO extends BaseDO { /** - * 出差表单主键 + * 名片定制表单主键 */ @TableId private Long id; diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOABusinessHospitalityDO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOABusinessHospitalityDO.java new file mode 100644 index 00000000..50d62582 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOABusinessHospitalityDO.java @@ -0,0 +1,99 @@ +package cn.iocoder.yudao.module.bpm.dal.dataobject.oa; + +import cn.iocoder.yudao.framework.common.pojo.UploadUserFile; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; +import lombok.*; + +import java.time.LocalDate; +import java.util.List; + +/** + * OA 商务招待 DO + * + * @author 符溶馨 + */ +@TableName(value ="bpm_oa_business_card", autoResultMap = true) +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class BpmOABusinessHospitalityDO extends BaseDO { + + /** + * 商务招待表单主键 + */ + @TableId + private Long id; + + /** + * 申请人的用户编号 + * 关联 AdminUserDO 的 id 属性 + */ + private Long userId; + + /** + * 招待事由 + */ + private String reason; + + /** + * 客户单位 + */ + private String customerUnit; + + /** + * 招待日期 + */ + private LocalDate entertainDate; + + /** + * 招待地点 + */ + private String entertainLocation; + + /** + * 招待人员名单 + */ + private String staff; + + /** + * 招待费用预算 + */ + private Integer costBudget; + + /*** + * 是否用车 | 0否 1是 + */ + private Integer isCar; + + /** + * 是否住宿 | 0否 1是 + */ + private Integer isStay; + + /** + * 申请的结果 + * 枚举 {@link BpmProcessInstanceResultEnum} + * 考虑到简单,所以直接复用了 BpmProcessInstanceResultEnum 枚举,也可以自己定义一个枚举哈 + */ + private Integer result; + + /** + * 对应的流程编号 + * 关联 ProcessInstance 的 id 属性 + */ + private String processInstanceId; + + /** + * 附件基本信息 + */ + @TableField(typeHandler = JacksonTypeHandler.class) + private List fileItems; +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/oa/BpmOABusinessHospitalityMapper.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/oa/BpmOABusinessHospitalityMapper.java new file mode 100644 index 00000000..4a41cef6 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/oa/BpmOABusinessHospitalityMapper.java @@ -0,0 +1,9 @@ +package cn.iocoder.yudao.module.bpm.dal.mysql.oa; + +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOABusinessHospitalityDO; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface BpmOABusinessHospitalityMapper extends BaseMapperX { +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOABusinessHospitalityService.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOABusinessHospitalityService.java new file mode 100644 index 00000000..7054ca0e --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOABusinessHospitalityService.java @@ -0,0 +1,37 @@ +package cn.iocoder.yudao.module.bpm.service.oa; + +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.businessHospitality.BpmOABusinessHospitalityCreateReqVO; +import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOABusinessHospitalityDO; + +public interface BpmOABusinessHospitalityService { + + /** + * 创建商务招待申请 + * @param userId 用户id + * @param createReqVO 创建信息 + * @return 商务招待申请编号 + */ + Long createBusinessHospitality(Long userId, BpmOABusinessHospitalityCreateReqVO createReqVO); + + /** + * 获得商务招待申请 + * @param id 编号 + * @return 商务招待申请详情 + */ + BpmOABusinessHospitalityDO getBusinessHospitality(Long id); + + /** + * 获得名片定制 + * @param processInstanceId 流程实例编号 + * @return 商务招待申请详情 + */ + BpmOABusinessHospitalityDO getByProcessInstanceId(String processInstanceId); + + /** + * 更新商务招待申请的状态 + * + * @param id 编号 + * @param result 结果 + */ + void updateBusinessHospitalityResult(Long id, Integer result); +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOABusinessHospitalityServiceImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOABusinessHospitalityServiceImpl.java new file mode 100644 index 00000000..3a10e0d0 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOABusinessHospitalityServiceImpl.java @@ -0,0 +1,102 @@ +package cn.iocoder.yudao.module.bpm.service.oa; + +import cn.iocoder.yudao.framework.common.pojo.UploadUserFile; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.businessHospitality.BpmOABusinessHospitalityCreateReqVO; +import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOABusinessHospitalityDO; +import cn.iocoder.yudao.module.bpm.dal.mysql.oa.BpmOABusinessHospitalityMapper; +import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum; +import cn.iocoder.yudao.module.bpm.service.task.BpmHistoryProcessInstanceService; +import cn.iocoder.yudao.module.bpm.service.task.BpmProcessInstanceService; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.bpm.enums.ErrorCodeConstants.OA_BUSINESS_HOSPITALITY_NOT_EXISTS; + +/** + * OA 商务招待 Service 实现类 + * + * @author 符溶馨 + */ +@Service +@Validated +public class BpmOABusinessHospitalityServiceImpl extends BpmOABaseService implements BpmOABusinessHospitalityService{ + + /** + * OA 商务招待对应的流程定义 KEY + */ + public static final String PROCESS_KEY = "oa_business_hospitality_2"; + + @Resource + private BpmOABusinessHospitalityMapper bpmOABusinessHospitalityMapper; + + @Resource + private BpmProcessInstanceService processInstanceService; + + @Resource + private BpmHistoryProcessInstanceService historyProcessInstanceService; + + @Override + public Long createBusinessHospitality(Long userId, BpmOABusinessHospitalityCreateReqVO createReqVO) { + + //插入OA 商务招待申请 + BpmOABusinessHospitalityDO bpmOABusinessHospitalityDO = BeanUtils.toBean(createReqVO, BpmOABusinessHospitalityDO.class) + .setUserId(userId) + .setResult(BpmProcessInstanceResultEnum.PROCESS.getResult()); + bpmOABusinessHospitalityMapper.insert(bpmOABusinessHospitalityDO); + + // 发起 BPM 流程 + Map processInstanceVariables = new HashMap<>(); + String processInstanceId = processInstanceService.createProcessInstance(userId, + new BpmProcessInstanceCreateReqDTO().setProcessDefinitionKey(PROCESS_KEY) + .setVariables(processInstanceVariables).setBusinessKey(String.valueOf(bpmOABusinessHospitalityDO.getId()))); + + // 将工作流的编号,更新到 OA 商务招待单中 + bpmOABusinessHospitalityMapper.updateById(new BpmOABusinessHospitalityDO() + .setId(bpmOABusinessHospitalityDO.getId()) + .setProcessInstanceId(processInstanceId)); + + // 判断是否为重新发起的流程 + if (createReqVO.getProcessInstanceId() != null && createReqVO.getResult() == 3) { + + historyProcessInstanceService.createHistoryProcessInstance(processInstanceId, createReqVO.getProcessInstanceId()); + } + + List fileItems = createReqVO.getFileItems(); + //这里的逻辑,如果fileItems不为空,且有数据,那么说明是上传了附件的,则需要更工作流文件表对应的实例Id + if (fileItems != null && !fileItems.isEmpty()) { + uploadBpmFileProcessInstanceId(processInstanceId, fileItems); + } + return bpmOABusinessHospitalityDO.getId(); + } + + @Override + public BpmOABusinessHospitalityDO getBusinessHospitality(Long id) { + return bpmOABusinessHospitalityMapper.selectById(id); + } + + @Override + public BpmOABusinessHospitalityDO getByProcessInstanceId(String processInstanceId) { + return bpmOABusinessHospitalityMapper.selectOne(BpmOABusinessHospitalityDO::getProcessInstanceId, processInstanceId); + } + + @Override + public void updateBusinessHospitalityResult(Long id, Integer result) { + + validateLeaveExists(id); + bpmOABusinessHospitalityMapper.updateById(new BpmOABusinessHospitalityDO().setId(id).setResult(result)); + } + + private void validateLeaveExists(Long id) { + if (bpmOABusinessHospitalityMapper.selectById(id) == null) { + throw exception(OA_BUSINESS_HOSPITALITY_NOT_EXISTS); + } + } +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/listener/BpmOABusinessHospitalityResultListener.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/listener/BpmOABusinessHospitalityResultListener.java new file mode 100644 index 00000000..1f6ec097 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/listener/BpmOABusinessHospitalityResultListener.java @@ -0,0 +1,32 @@ +package cn.iocoder.yudao.module.bpm.service.oa.listener; + +import cn.iocoder.yudao.module.bpm.framework.bpm.core.event.BpmProcessInstanceResultEvent; +import cn.iocoder.yudao.module.bpm.framework.bpm.core.event.BpmProcessInstanceResultEventListener; +import cn.iocoder.yudao.module.bpm.service.oa.BpmOABusinessHospitalityService; +import cn.iocoder.yudao.module.bpm.service.oa.BpmOABusinessHospitalityServiceImpl; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + * OA 商务招待的结果的监听器实现类 + * + * @author 符溶馨 + */ +@Component +public class BpmOABusinessHospitalityResultListener extends BpmProcessInstanceResultEventListener { + @Resource + private BpmOABusinessHospitalityService businessHospitalityService; + + @Override + protected String getProcessDefinitionKey() { + + return BpmOABusinessHospitalityServiceImpl.PROCESS_KEY; + } + + @Override + protected void onEvent(BpmProcessInstanceResultEvent event) { + + businessHospitalityService.updateBusinessHospitalityResult(Long.parseLong(event.getBusinessKey()), event.getResult()); + } +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/listener/BpmOAHireResultListener.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/listener/BpmOAHireResultListener.java new file mode 100644 index 00000000..0a115949 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/listener/BpmOAHireResultListener.java @@ -0,0 +1,32 @@ +package cn.iocoder.yudao.module.bpm.service.oa.listener; + +import cn.iocoder.yudao.module.bpm.framework.bpm.core.event.BpmProcessInstanceResultEvent; +import cn.iocoder.yudao.module.bpm.framework.bpm.core.event.BpmProcessInstanceResultEventListener; +import cn.iocoder.yudao.module.bpm.service.oa.BpmOAHireService; +import cn.iocoder.yudao.module.bpm.service.oa.BpmOAHireServiceImpl; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + * OA 名片定制的结果的监听器实现类 + * + * @author 符溶馨 + */ +@Component +public class BpmOAHireResultListener extends BpmProcessInstanceResultEventListener { + @Resource + private BpmOAHireService hireService; + + @Override + protected String getProcessDefinitionKey() { + + return BpmOAHireServiceImpl.PROCESS_KEY; + } + + @Override + protected void onEvent(BpmProcessInstanceResultEvent event) { + + hireService.updateHireResult(Long.parseLong(event.getBusinessKey()), event.getResult()); + } +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/position/PositionController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/position/PositionController.java index 63c6261a..19de3abd 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/position/PositionController.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/position/PositionController.java @@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.system.controller.admin.position; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageParam; import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.datapermission.core.annotation.DataPermission; import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; @@ -10,7 +11,9 @@ import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; import cn.iocoder.yudao.module.system.controller.admin.position.vo.PositionPageReqVO; import cn.iocoder.yudao.module.system.controller.admin.position.vo.PositionRespVO; import cn.iocoder.yudao.module.system.controller.admin.position.vo.PositionSaveReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO; import cn.iocoder.yudao.module.system.dal.dataobject.position.PositionDO; +import cn.iocoder.yudao.module.system.service.dept.DeptService; import cn.iocoder.yudao.module.system.service.position.PositionService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; @@ -24,8 +27,10 @@ import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; import java.util.List; +import java.util.Map; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; @Tag(name = "管理后台 - 岗位信息") @@ -37,6 +42,9 @@ public class PositionController { @Resource private PositionService positionService; + @Resource + private DeptService deptService; + @PostMapping("/create") @Operation(summary = "创建岗位信息") @PreAuthorize("@ss.hasPermission('system:position:create')") @@ -67,16 +75,22 @@ public class PositionController { @PreAuthorize("@ss.hasPermission('system:position:query')") public CommonResult getPosition(@RequestParam("id") Long id) { PositionDO position = positionService.getPosition(id); - return success(BeanUtils.toBean(position, PositionRespVO.class)); + + PositionRespVO respVO = BeanUtils.toBean(position, PositionRespVO.class); + if (respVO != null) { + // 设置部门名称 + respVO.setDeptName(deptService.getDept(position.getDeptId()).getName()); + } + return success(respVO); } @GetMapping("/get-list") @Operation(summary = "获得岗位信息") - @Parameter(name = "id", description = "编号", required = true, example = "1024") + @Parameter(name = "deptId", description = "部门编号", required = true, example = "1024") @PreAuthorize("@ss.hasPermission('system:position:query')") @DataPermission(enable = false) - public CommonResult> getPositionList() { - List positions = positionService.getPositionList(); + public CommonResult> getPositionList(@RequestParam("deptId") Long deptId) { + List positions = positionService.getPositionByDeptId(deptId); return success(BeanUtils.toBean(positions, PositionRespVO.class)); } @@ -85,7 +99,13 @@ public class PositionController { @PreAuthorize("@ss.hasPermission('system:position:query')") public CommonResult> getPositionPage(@Valid PositionPageReqVO pageReqVO) { PageResult pageResult = positionService.getPositionPage(pageReqVO); - return success(BeanUtils.toBean(pageResult, PositionRespVO.class)); + PageResult respVO = BeanUtils.toBean(pageResult, PositionRespVO.class); + + // 获取部门信息Map + Map deptMap = deptService.getDeptMap(convertList(respVO.getList(), PositionRespVO::getDeptId)); + respVO.getList().forEach(item -> item.setDeptName(deptMap.get(item.getDeptId()).getName())); + + return success(respVO); } @GetMapping("/export-excel") diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/position/vo/PositionPageReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/position/vo/PositionPageReqVO.java index 05d23428..0e831d6f 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/position/vo/PositionPageReqVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/position/vo/PositionPageReqVO.java @@ -17,15 +17,15 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_ @ToString(callSuper = true) public class PositionPageReqVO extends PageParam { + @Schema(description = "部门编号", example = "1024") + private Long deptId; + @Schema(description = "岗位名称", example = "JAVA开发") private String name; @Schema(description = "状态(0正常 1停用)", example = "0") private Integer status; - @Schema(description = "备注", example = "你说的对") - private String remark; - @Schema(description = "创建时间") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime[] createTime; diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/position/vo/PositionRespVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/position/vo/PositionRespVO.java index 9f786112..f635f64d 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/position/vo/PositionRespVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/position/vo/PositionRespVO.java @@ -16,6 +16,12 @@ public class PositionRespVO { @ExcelProperty("岗位ID") private Long id; + @Schema(description = "部门编号", example = "1024") + private Long deptId; + + @Schema(description = "部门名称") + private String deptName; + @Schema(description = "岗位名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "JAVA开发") @ExcelProperty("岗位名称") private String name; diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/position/vo/PositionSaveReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/position/vo/PositionSaveReqVO.java index 9fdd3266..f3e06dc9 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/position/vo/PositionSaveReqVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/position/vo/PositionSaveReqVO.java @@ -13,6 +13,9 @@ public class PositionSaveReqVO { @Schema(description = "岗位ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") private Long id; + @Schema(description = "部门编号", example = "1024") + private Long deptId; + @Schema(description = "岗位名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "JAVA开发") @NotEmpty(message = "岗位名称不能为空") private String name; diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/position/PositionDO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/position/PositionDO.java index 44c3d984..ad3d35bc 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/position/PositionDO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/position/PositionDO.java @@ -12,7 +12,6 @@ import lombok.*; * @author 符溶馨 */ @TableName("system_position") -@KeySequence("system_position_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) @@ -26,6 +25,10 @@ public class PositionDO extends BaseDO { */ @TableId private Long id; + /** + * 部门编号 + */ + private Long deptId; /** * 岗位名称 */ diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/position/PositionMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/position/PositionMapper.java index 7f82c184..e7faf2ea 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/position/PositionMapper.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/position/PositionMapper.java @@ -7,6 +7,8 @@ import cn.iocoder.yudao.module.system.controller.admin.position.vo.PositionPageR import cn.iocoder.yudao.module.system.dal.dataobject.position.PositionDO; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + /** * 岗位信息 Mapper * @@ -15,11 +17,11 @@ import org.apache.ibatis.annotations.Mapper; @Mapper public interface PositionMapper extends BaseMapperX { - default PageResult selectPage(PositionPageReqVO reqVO) { + default PageResult selectPage(PositionPageReqVO reqVO, List deptIds) { return selectPage(reqVO, new LambdaQueryWrapperX() + .inIfPresent(PositionDO::getDeptId, deptIds) .likeIfPresent(PositionDO::getName, reqVO.getName()) .eqIfPresent(PositionDO::getStatus, reqVO.getStatus()) - .eqIfPresent(PositionDO::getRemark, reqVO.getRemark()) .betweenIfPresent(PositionDO::getCreateTime, reqVO.getCreateTime()) .orderByDesc(PositionDO::getId)); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/framework/datapermission/config/DataPermissionConfiguration.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/framework/datapermission/config/DataPermissionConfiguration.java index 0479381b..90db959b 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/framework/datapermission/config/DataPermissionConfiguration.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/framework/datapermission/config/DataPermissionConfiguration.java @@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.system.framework.datapermission.config; import cn.iocoder.yudao.framework.datapermission.core.rule.dept.DeptDataPermissionRuleCustomizer; import cn.iocoder.yudao.module.system.dal.dataobject.assets.DeptAssetsDO; import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO; +import cn.iocoder.yudao.module.system.dal.dataobject.position.PositionDO; import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO; import cn.iocoder.yudao.module.system.dal.dataobject.worklog.LogInstanceDO; import cn.iocoder.yudao.module.system.dal.dataobject.worklog.LogStatisticsDO; @@ -26,6 +27,7 @@ public class DataPermissionConfiguration { rule.addDeptColumn(LogStatisticsDO.class, "dept_id"); rule.addDeptColumn(LogInstanceDO.class, "dept_id"); rule.addDeptColumn(DeptAssetsDO.class, "dept_id"); + rule.addDeptColumn(PositionDO.class, "dept_id"); // user rule.addUserColumn(AdminUserDO.class, "id"); diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/permission/PermissionServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/permission/PermissionServiceImpl.java index 448a3e2b..21957c06 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/permission/PermissionServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/permission/PermissionServiceImpl.java @@ -320,6 +320,7 @@ public class PermissionServiceImpl implements PermissionService { // 情况五,SELF if (Objects.equals(role.getDataScope(), DataScopeEnum.SELF.getScope())) { result.setSelf(true); + result.setDeptId(userDeptId.get()); continue; } // 未知情况,error log 即可 diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/position/PositionService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/position/PositionService.java index 6727a756..b90fde2b 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/position/PositionService.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/position/PositionService.java @@ -57,7 +57,7 @@ public interface PositionService { * 获得开启得 岗位列表 * @return 岗位列表 */ - List getPositionList(); + List getPositionByDeptId(Long deptId); /** * 获得指定得岗位列表 diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/position/PositionServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/position/PositionServiceImpl.java index 9debe46d..5dd1f4f2 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/position/PositionServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/position/PositionServiceImpl.java @@ -6,16 +6,18 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.module.system.controller.admin.position.vo.PositionPageReqVO; import cn.iocoder.yudao.module.system.controller.admin.position.vo.PositionSaveReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO; import cn.iocoder.yudao.module.system.dal.dataobject.position.PositionDO; import cn.iocoder.yudao.module.system.dal.mysql.position.PositionMapper; +import cn.iocoder.yudao.module.system.service.dept.DeptService; 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.framework.common.util.collection.CollectionUtils.convertList; import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.POSITION_NOT_EXISTS; /** @@ -30,6 +32,9 @@ public class PositionServiceImpl implements PositionService { @Resource private PositionMapper positionMapper; + @Resource + private DeptService deptService; + @Override public Long createPosition(PositionSaveReqVO createReqVO) { // 插入 @@ -69,12 +74,20 @@ public class PositionServiceImpl implements PositionService { @Override public PageResult getPositionPage(PositionPageReqVO pageReqVO) { - return positionMapper.selectPage(pageReqVO); + + List deptIds = null; + if (pageReqVO.getDeptId() != null) { + deptIds = convertList(deptService.getChildDept(pageReqVO.getDeptId()), DeptDO::getId); + } + + return positionMapper.selectPage(pageReqVO, deptIds); } @Override - public List getPositionList() { - return positionMapper.selectList(PositionDO::getStatus, CommonStatusEnum.ENABLE.getStatus()); + public List getPositionByDeptId(Long deptId) { + return positionMapper.selectList(new LambdaQueryWrapperX() + .eqIfPresent(PositionDO::getDeptId, deptId) + .eq(PositionDO::getStatus, CommonStatusEnum.ENABLE.getStatus())); } @Override