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 5f256578..e588beae 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 @@ -22,6 +22,9 @@ public interface ErrorCodeConstants { ErrorCode OA_DAY_LEAVE_ERROR = new ErrorCode(1_009_001_007, "请假天数必须>=1"); ErrorCode OA_REIMBURSEMENT_NOT_EXISTS = new ErrorCode(1_009_001_100, "报销申请不存在"); + ErrorCode OA_EVECTION_NOT_EXISTS = new ErrorCode(1_009_001_101, "出差申请不存在"); + ErrorCode OA_SEAL_NOT_EXISTS = new ErrorCode(1_009_001_102, "用章申请不存在"); + ErrorCode OA_CONTRACT_NOT_EXISTS = new ErrorCode(1_009_001_103, "合同审批不存在"); // ========== 流程模型 1-009-002-000 ========== ErrorCode MODEL_KEY_EXISTS = new ErrorCode(1_009_002_000, "已经存在流程标识为【{}】的流程"); @@ -57,6 +60,7 @@ public interface ErrorCodeConstants { ErrorCode TASK_ADD_SIGN_USER_REPEAT = new ErrorCode(1_009_005_011, "任务加签失败,加签人与现有审批人[{}]重复"); ErrorCode TASK_SUB_SIGN_NO_PARENT = new ErrorCode(1_009_005_012, "任务减签失败,被减签的任务必须是通过加签生成的任务"); ErrorCode TASK_OPERATE_FAIL_USER_NO_POST = new ErrorCode(1_009_005_014, "操作失败,原因:您未配置岗位,请联系管理员操作"); + ErrorCode TASK_OPERATE_FAIL_USER_NO_DEPT = new ErrorCode(1_009_005_015, "操作失败,原因:您未配置部门,请联系管理员操作"); // ========== 流程任务分配规则 1-009-006-000 ========== ErrorCode TASK_ASSIGN_RULE_EXISTS = new ErrorCode(1_009_006_000, "流程({}) 的任务({}) 已经存在分配规则"); diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOACashController.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOACashController.java new file mode 100644 index 00000000..81ecf159 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOACashController.java @@ -0,0 +1,52 @@ +package cn.iocoder.yudao.module.bpm.controller.admin.oa; + +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.cash.BpmOACashCreateReqVO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.cash.BpmOACashRespVO; +import cn.iocoder.yudao.module.bpm.convert.oa.BpmOACashConvert; +import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOACashDO; +import cn.iocoder.yudao.module.bpm.service.oa.BpmOACashService; +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/cash") +@Validated +public class BpmOACashController { + + @Resource + private BpmOACashService cashService; + + @PostMapping("/create") + @Operation(summary = "创建请求申请") + public CommonResult createCash(@Valid @RequestBody BpmOACashCreateReqVO createReqVO) { + + return success(cashService.createCash(getLoginUserId(), createReqVO)); + } + + @GetMapping("/get") + @Operation(summary = "获得请假申请") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + public CommonResult getCash(@RequestParam("id") Long id) { + + BpmOACashDO cash = cashService.getCash(id); + + return success(BpmOACashConvert.INSTANCE.convert(cash)); + } +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOAContractController.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOAContractController.java new file mode 100644 index 00000000..444e71c9 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOAContractController.java @@ -0,0 +1,52 @@ +package cn.iocoder.yudao.module.bpm.controller.admin.oa; + +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.contract.BpmOAContractCreateReqVO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.contract.BpmOAContractRespVO; +import cn.iocoder.yudao.module.bpm.convert.oa.BpmOAContractConvert; +import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAContractDO; +import cn.iocoder.yudao.module.bpm.service.oa.BpmOAContractService; +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/contract") +@Validated +public class BpmOAContractController { + + @Resource + private BpmOAContractService contractService; + + @PostMapping("/create") + @Operation(summary = "创建请求申请") + public CommonResult createContract(@Valid @RequestBody BpmOAContractCreateReqVO createReqVO) { + + return success(contractService.createContract(getLoginUserId(), createReqVO)); + } + + @GetMapping("/get") + @Operation(summary = "获得请假申请") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + public CommonResult getContract(@RequestParam("id") Long id) { + + BpmOAContractDO contract = contractService.getContract(id); + + return success(BpmOAContractConvert.INSTANCE.convert(contract)); + } +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOAEvectionController.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOAEvectionController.java new file mode 100644 index 00000000..b2c3ed23 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOAEvectionController.java @@ -0,0 +1,52 @@ +package cn.iocoder.yudao.module.bpm.controller.admin.oa; + +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.evection.BpmOAEvectionCreateReqVO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.evection.BpmOAEvectionRespVO; +import cn.iocoder.yudao.module.bpm.convert.oa.BpmOAEvectionConvert; +import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAEvectionDO; +import cn.iocoder.yudao.module.bpm.service.oa.BpmOAEvectionService; +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/evection") +@Validated +public class BpmOAEvectionController { + + @Resource + private BpmOAEvectionService evectionService; + + @PostMapping("/create") + @Operation(summary = "创建请求申请") + public CommonResult createEvection(@Valid @RequestBody BpmOAEvectionCreateReqVO createReqVO) { + + return success(evectionService.createEvection(getLoginUserId(), createReqVO)); + } + + @GetMapping("/get") + @Operation(summary = "获得请假申请") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + public CommonResult getEvection(@RequestParam("id") Long id) { + + BpmOAEvectionDO evection = evectionService.getEvection(id); + + return success(BpmOAEvectionConvert.INSTANCE.convert(evection)); + } +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOALeaveController.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOALeaveController.java index e0e02f0b..f307db1b 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOALeaveController.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOALeaveController.java @@ -1,8 +1,8 @@ package cn.iocoder.yudao.module.bpm.controller.admin.oa; -import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.BpmOALeaveCreateReqVO; -import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.BpmOALeavePageReqVO; -import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.BpmOALeaveRespVO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.leave.BpmOALeaveCreateReqVO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.leave.BpmOALeavePageReqVO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.leave.BpmOALeaveRespVO; import cn.iocoder.yudao.module.bpm.convert.oa.BpmOALeaveConvert; import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOALeaveDO; import cn.iocoder.yudao.framework.common.pojo.CommonResult; diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOAReimbursementController.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOAReimbursementController.java index da1132fb..3ea354d6 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOAReimbursementController.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOAReimbursementController.java @@ -1,20 +1,13 @@ package cn.iocoder.yudao.module.bpm.controller.admin.oa; import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.BpmOALeaveCreateReqVO; -import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.BpmOALeavePageReqVO; -import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.BpmOALeaveRespVO; -import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.BpmOAReimbursementCreateReqVO; -import cn.iocoder.yudao.module.bpm.convert.oa.BpmOALeaveConvert; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.reimbursement.BpmOAReimbursementCreateReqVO; import cn.iocoder.yudao.module.bpm.convert.oa.BpmOAReimbursementConvert; -import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOALeaveDO; import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAReimbursementDO; import cn.iocoder.yudao.module.bpm.service.oa.BpmOAReimbursementService; 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.*; diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOASealController.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOASealController.java new file mode 100644 index 00000000..5d036ddf --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOASealController.java @@ -0,0 +1,52 @@ +package cn.iocoder.yudao.module.bpm.controller.admin.oa; + +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.seal.BpmOASealCreateReqVO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.seal.BpmOASealRespVO; +import cn.iocoder.yudao.module.bpm.convert.oa.BpmOASealConvert; +import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOASealDO; +import cn.iocoder.yudao.module.bpm.service.oa.BpmOASealService; +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/seal") +@Validated +public class BpmOASealController { + + @Resource + private BpmOASealService sealService; + + @PostMapping("/create") + @Operation(summary = "创建请求申请") + public CommonResult createSeal(@Valid @RequestBody BpmOASealCreateReqVO createReqVO) { + + return success(sealService.createSeal(getLoginUserId(), createReqVO)); + } + + @GetMapping("/get") + @Operation(summary = "获得请假申请") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + public CommonResult getSeal(@RequestParam("id") Long id) { + + BpmOASealDO seal = sealService.getSeal(id); + + return success(BpmOASealConvert.INSTANCE.convert(seal)); + } +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/cash/BpmOACashCreateReqVO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/cash/BpmOACashCreateReqVO.java new file mode 100644 index 00000000..2d968786 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/cash/BpmOACashCreateReqVO.java @@ -0,0 +1,46 @@ +package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.cash; + +import cn.iocoder.yudao.module.bpm.controller.admin.upload.UploadUserFile; +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.math.BigDecimal; +import java.time.LocalDate; +import java.util.List; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY; + +/** + * 现金支出 创建 Request VO + * + * @author 符溶馨 + */ +@Schema(description = "管理后台 - 现金支出创建 Request VO") +@Data +@EqualsAndHashCode() +@ToString(callSuper = true) +public class BpmOACashCreateReqVO { + + @Schema(description = "申请事由", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "申请事由不能为空") + private String reason; + + @Schema(description = "支出金额", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "申请金额不能为空") + private BigDecimal totalMoney; + + @Schema(description = "申请日期", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "申请日期不能为空") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY) + private LocalDate applicationDate; + + @Schema(description = "备注说明", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + private BigDecimal notes; + + @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/cash/BpmOACashRespVO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/cash/BpmOACashRespVO.java new file mode 100644 index 00000000..1cfdfa75 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/cash/BpmOACashRespVO.java @@ -0,0 +1,45 @@ +package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.cash; + +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.BpmOABaseRespVO; +import cn.iocoder.yudao.module.bpm.controller.admin.upload.UploadUserFile; +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.math.BigDecimal; +import java.time.LocalDate; +import java.util.List; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY; + +/** + * @author 符溶馨 + */ +@Schema(description = "管理后台 - 现金支出 请求Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class BpmOACashRespVO extends BpmOABaseRespVO { + + @Schema(description = "申请事由", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "申请事由不能为空") + private String reason; + + @Schema(description = "支出金额", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "申请金额不能为空") + private BigDecimal totalMoney; + + @Schema(description = "申请日期", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "申请日期不能为空") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY) + private LocalDate applicationDate; + + @Schema(description = "备注说明", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + private BigDecimal notes; + + @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/contract/BpmOAContractCreateReqVO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/contract/BpmOAContractCreateReqVO.java new file mode 100644 index 00000000..b1583712 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/contract/BpmOAContractCreateReqVO.java @@ -0,0 +1,55 @@ +package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.contract; + +import cn.iocoder.yudao.module.bpm.controller.admin.upload.UploadUserFile; +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; + +/** + * 合同审批 创建 Request VO + * + * @author 符溶馨 + */ +@Schema(description = "管理后台 - 合同审批创建 Request VO") +@Data +@EqualsAndHashCode() +@ToString(callSuper = true) +public class BpmOAContractCreateReqVO { + + @Schema(description = "合同名称", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "合同名称不能为空") + private String contractName; + + @Schema(description = "合同编号", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "合同编号不能为空") + private String contractNumber; + + @Schema(description = "签约日期", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "签约日期不能为空") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY) + private LocalDate signingDate; + + @Schema(description = "我方公司名称", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + private String mCompanyName; + + @Schema(description = "我方负责人", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + private String mHeadName; + + @Schema(description = "对方公司名称", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + private String oCompanyName; + + @Schema(description = "对方负责人", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + private String oHeadName; + + @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/contract/BpmOAContractRespVO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/contract/BpmOAContractRespVO.java new file mode 100644 index 00000000..d667281d --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/contract/BpmOAContractRespVO.java @@ -0,0 +1,53 @@ +package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.contract; + +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.BpmOABaseRespVO; +import cn.iocoder.yudao.module.bpm.controller.admin.upload.UploadUserFile; +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 符溶馨 + */ +@Schema(description = "管理后台 - 合同审批 请求Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class BpmOAContractRespVO extends BpmOABaseRespVO { + + @Schema(description = "合同名称", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "合同名称不能为空") + private String contractName; + + @Schema(description = "合同编号", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "合同编号不能为空") + private String contractNumber; + + @Schema(description = "签约日期", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "签约日期不能为空") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY) + private LocalDate signingDate; + + @Schema(description = "我方公司名称", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + private String mCompanyName; + + @Schema(description = "我方负责人", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + private String mHeadName; + + @Schema(description = "对方公司名称", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + private String oCompanyName; + + @Schema(description = "对方负责人", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + private String oHeadName; + + @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/evection/BpmOAEvectionCreateReqVO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/evection/BpmOAEvectionCreateReqVO.java new file mode 100644 index 00000000..fdb7883b --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/evection/BpmOAEvectionCreateReqVO.java @@ -0,0 +1,56 @@ +package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.evection; + +import cn.iocoder.yudao.module.bpm.controller.admin.upload.UploadUserFile; +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.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.List; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +/** + * 出差申请 创建 Request VO + * + * @author 符溶馨 + */ +@Schema(description = "管理后台 - 出差申请创建 Request VO") +@Data +@EqualsAndHashCode() +@ToString(callSuper = true) +public class BpmOAEvectionCreateReqVO { + + @Schema(description = "出差原因", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "出差事由不能为空") + private String reason; + + @Schema(description = "出差起点", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "出差起点不能为空") + private String startLocation; + + @Schema(description = "出差终点", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "出差终点不能为空") + private String endLocation; + + @Schema(description = "出差的开始时间", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "开始时间不能为空") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime startTime; + + @Schema(description = "出差的结束时间", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "结束时间不能为空") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime endTime; + + @Schema(description = "出差时长", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "出差时长不能为空") + private BigDecimal timeLength; + + @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/evection/BpmOAEvectionRespVO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/evection/BpmOAEvectionRespVO.java new file mode 100644 index 00000000..dece9fe9 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/evection/BpmOAEvectionRespVO.java @@ -0,0 +1,55 @@ +package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.evection; + +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.BpmOABaseRespVO; +import cn.iocoder.yudao.module.bpm.controller.admin.upload.UploadUserFile; +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.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.List; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +/** + * @author 符溶馨 + */ +@Schema(description = "管理后台 - 出差申请 请求Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class BpmOAEvectionRespVO extends BpmOABaseRespVO { + + @Schema(description = "出差原因", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "出差事由不能为空") + private String reason; + + @Schema(description = "出差起点", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "出差起点不能为空") + private String startLocation; + + @Schema(description = "出差终点", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "出差终点不能为空") + private String endLocation; + + @Schema(description = "出差的开始时间", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "开始时间不能为空") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime startTime; + + @Schema(description = "出差的结束时间", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "结束时间不能为空") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime endTime; + + @Schema(description = "出差时长", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "出差时长不能为空") + private BigDecimal timeLength; + + @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/BpmOALeaveBaseVO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/leave/BpmOALeaveBaseVO.java similarity index 90% rename from yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/BpmOALeaveBaseVO.java rename to yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/leave/BpmOALeaveBaseVO.java index 4bd1a350..df078edc 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/BpmOALeaveBaseVO.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/leave/BpmOALeaveBaseVO.java @@ -1,11 +1,9 @@ -package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo; +package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.leave; import cn.iocoder.yudao.module.bpm.controller.admin.upload.UploadUserFile; -import com.fasterxml.jackson.databind.JsonDeserializer; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; -import org.springframework.web.multipart.MultipartFile; import javax.validation.constraints.NotNull; import java.time.LocalDateTime; diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/BpmOALeaveCreateReqVO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/leave/BpmOALeaveCreateReqVO.java similarity index 89% rename from yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/BpmOALeaveCreateReqVO.java rename to yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/leave/BpmOALeaveCreateReqVO.java index 9bfd4488..af12b537 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/BpmOALeaveCreateReqVO.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/leave/BpmOALeaveCreateReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo; +package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.leave; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/BpmOALeavePageReqVO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/leave/BpmOALeavePageReqVO.java similarity index 94% rename from yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/BpmOALeavePageReqVO.java rename to yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/leave/BpmOALeavePageReqVO.java index 798b5ac7..0eecbcf8 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/BpmOALeavePageReqVO.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/leave/BpmOALeavePageReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo; +package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.leave; import cn.iocoder.yudao.framework.common.pojo.PageParam; import io.swagger.v3.oas.annotations.media.Schema; diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/BpmOALeaveRespVO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/leave/BpmOALeaveRespVO.java similarity index 94% rename from yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/BpmOALeaveRespVO.java rename to yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/leave/BpmOALeaveRespVO.java index b45ea700..53cc704f 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/BpmOALeaveRespVO.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/leave/BpmOALeaveRespVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo; +package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.leave; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/BpmOAReimbursementCreateReqVO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/reimbursement/BpmOAReimbursementCreateReqVO.java similarity index 81% rename from yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/BpmOAReimbursementCreateReqVO.java rename to yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/reimbursement/BpmOAReimbursementCreateReqVO.java index 427e132c..755f675f 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/BpmOAReimbursementCreateReqVO.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/reimbursement/BpmOAReimbursementCreateReqVO.java @@ -1,19 +1,14 @@ -package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo; +package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.reimbursement; import cn.iocoder.yudao.module.bpm.controller.admin.upload.UploadUserFile; 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.AssertTrue; import javax.validation.constraints.NotNull; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.List; -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; - @Schema(description = "管理后台 - 报销申请创建 Request VO") @Data @EqualsAndHashCode() diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/BpmOAReimbursementRespVO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/reimbursement/BpmOAReimbursementRespVO.java similarity index 86% rename from yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/BpmOAReimbursementRespVO.java rename to yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/reimbursement/BpmOAReimbursementRespVO.java index 35c8ae42..42b75a9b 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/BpmOAReimbursementRespVO.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/reimbursement/BpmOAReimbursementRespVO.java @@ -1,4 +1,5 @@ -package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo; +package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.reimbursement; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.BpmOABaseRespVO; import cn.iocoder.yudao.module.bpm.controller.admin.upload.UploadUserFile; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -13,7 +14,7 @@ import java.util.List; @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) -public class BpmOAReimbursementRespVO extends BpmOABaseRespVO{ +public class BpmOAReimbursementRespVO extends BpmOABaseRespVO { @Schema(description = "报销项目明细", requiredMode = Schema.RequiredMode.REQUIRED) @NotNull(message = "报销项目不能为空") diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/Reimbursement.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/reimbursement/Reimbursement.java similarity index 91% rename from yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/Reimbursement.java rename to yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/reimbursement/Reimbursement.java index 3fb19bd3..12537820 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/Reimbursement.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/reimbursement/Reimbursement.java @@ -1,10 +1,9 @@ -package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo; +package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.reimbursement; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.Date; /** diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/seal/BpmOASealCreateReqVO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/seal/BpmOASealCreateReqVO.java new file mode 100644 index 00000000..24696862 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/seal/BpmOASealCreateReqVO.java @@ -0,0 +1,50 @@ +package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.seal; + +import cn.iocoder.yudao.module.bpm.controller.admin.upload.UploadUserFile; +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; + +/** + * 用章申请 创建 Request VO + * + * @author 符溶馨 + */ +@Schema(description = "管理后台 - 用章申请创建 Request VO") +@Data +@EqualsAndHashCode() +@ToString(callSuper = true) +public class BpmOASealCreateReqVO { + + @Schema(description = "用章原因", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "用章事由不能为空") + private String reason; + + @Schema(description = "印章类型-参见 bpm_oa_seal_type 枚举", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "印章类型不能为空") + private Integer type; + + @Schema(description = "文件名称", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "文件名称不能为空") + private String fileName; + + @Schema(description = "文件数量", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "文件份数不能为空") + private Long fileNumber; + + @Schema(description = "用章日期", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "用章日期不能为空") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY) + private LocalDate useDate; + + @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/seal/BpmOASealRespVO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/seal/BpmOASealRespVO.java new file mode 100644 index 00000000..55cff2f8 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/seal/BpmOASealRespVO.java @@ -0,0 +1,49 @@ +package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.seal; + +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.BpmOABaseRespVO; +import cn.iocoder.yudao.module.bpm.controller.admin.upload.UploadUserFile; +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 符溶馨 + */ +@Schema(description = "管理后台 - 用章申请 请求Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class BpmOASealRespVO extends BpmOABaseRespVO { + + @Schema(description = "用章原因", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "用章事由不能为空") + private String reason; + + @Schema(description = "印章类型-参见 bpm_oa_seal_type 枚举", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "印章类型不能为空") + private Integer type; + + @Schema(description = "文件名称", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "文件名称不能为空") + private String fileName; + + @Schema(description = "文件数量", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "文件份数不能为空") + private Long fileNumber; + + @Schema(description = "用章日期", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "用章日期不能为空") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY) + private LocalDate useDate; + + @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/convert/oa/BpmOACashConvert.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/oa/BpmOACashConvert.java new file mode 100644 index 00000000..bbfa6b12 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/oa/BpmOACashConvert.java @@ -0,0 +1,22 @@ +package cn.iocoder.yudao.module.bpm.convert.oa; + +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.cash.BpmOACashCreateReqVO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.cash.BpmOACashRespVO; +import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOACashDO; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +/** + * 现金支出 Convert + * + * @author 符溶馨 + */ +@Mapper +public interface BpmOACashConvert { + + BpmOACashConvert INSTANCE = Mappers.getMapper(BpmOACashConvert.class); + + BpmOACashDO convert(BpmOACashCreateReqVO bean); + + BpmOACashRespVO convert(BpmOACashDO bean); +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/oa/BpmOAContractConvert.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/oa/BpmOAContractConvert.java new file mode 100644 index 00000000..b435daa3 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/oa/BpmOAContractConvert.java @@ -0,0 +1,22 @@ +package cn.iocoder.yudao.module.bpm.convert.oa; + +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.contract.BpmOAContractCreateReqVO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.contract.BpmOAContractRespVO; +import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAContractDO; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +/** + * 合同审批 Convert + * + * @author 符溶馨 + */ +@Mapper +public interface BpmOAContractConvert { + + BpmOAContractConvert INSTANCE = Mappers.getMapper(BpmOAContractConvert.class); + + BpmOAContractDO convert(BpmOAContractCreateReqVO bean); + + BpmOAContractRespVO convert(BpmOAContractDO bean); +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/oa/BpmOAEvectionConvert.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/oa/BpmOAEvectionConvert.java new file mode 100644 index 00000000..f4c330f7 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/oa/BpmOAEvectionConvert.java @@ -0,0 +1,22 @@ +package cn.iocoder.yudao.module.bpm.convert.oa; + +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.evection.BpmOAEvectionCreateReqVO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.evection.BpmOAEvectionRespVO; +import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAEvectionDO; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +/** + * 出差申请 Convert + * + * @author 符溶馨 + */ +@Mapper +public interface BpmOAEvectionConvert { + + BpmOAEvectionConvert INSTANCE = Mappers.getMapper(BpmOAEvectionConvert.class); + + BpmOAEvectionDO convert(BpmOAEvectionCreateReqVO bean); + + BpmOAEvectionRespVO convert(BpmOAEvectionDO bean); +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/oa/BpmOALeaveConvert.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/oa/BpmOALeaveConvert.java index 8c56e1dd..0f58f237 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/oa/BpmOALeaveConvert.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/oa/BpmOALeaveConvert.java @@ -1,8 +1,8 @@ package cn.iocoder.yudao.module.bpm.convert.oa; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.BpmOALeaveCreateReqVO; -import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.BpmOALeaveRespVO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.leave.BpmOALeaveCreateReqVO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.leave.BpmOALeaveRespVO; import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOALeaveDO; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/oa/BpmOAReimbursementConvert.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/oa/BpmOAReimbursementConvert.java index 8bd363c9..afff07a8 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/oa/BpmOAReimbursementConvert.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/oa/BpmOAReimbursementConvert.java @@ -1,13 +1,11 @@ package cn.iocoder.yudao.module.bpm.convert.oa; -import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.BpmOAReimbursementCreateReqVO; -import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.BpmOAReimbursementRespVO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.reimbursement.BpmOAReimbursementCreateReqVO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.reimbursement.BpmOAReimbursementRespVO; import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAReimbursementDO; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; -import java.util.List; - /** * 报销申请 Convert * diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/oa/BpmOASealConvert.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/oa/BpmOASealConvert.java new file mode 100644 index 00000000..e5a5b767 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/oa/BpmOASealConvert.java @@ -0,0 +1,22 @@ +package cn.iocoder.yudao.module.bpm.convert.oa; + +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.seal.BpmOASealCreateReqVO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.seal.BpmOASealRespVO; +import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOASealDO; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +/** + * 用章申请 Convert + * + * @author 符溶馨 + */ +@Mapper +public interface BpmOASealConvert { + + BpmOASealConvert INSTANCE = Mappers.getMapper(BpmOASealConvert.class); + + BpmOASealDO convert(BpmOASealCreateReqVO bean); + + BpmOASealRespVO convert(BpmOASealDO bean); +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOACashDO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOACashDO.java new file mode 100644 index 00000000..47866372 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOACashDO.java @@ -0,0 +1,83 @@ +package cn.iocoder.yudao.module.bpm.dal.dataobject.oa; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import cn.iocoder.yudao.module.bpm.controller.admin.upload.UploadUserFile; +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.math.BigDecimal; +import java.time.LocalDate; +import java.util.List; + +/** + * OA 现金支出 DO + * + * @author 符溶馨 + */ +@TableName(value ="bpm_oa_cash", autoResultMap = true) +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class BpmOACashDO extends BaseDO { + + /** + * 出差表单主键 + */ + @TableId + private Long id; + + /** + * 申请人的用户编号 + * + * 关联 AdminUserDO 的 id 属性 + */ + private Long userId; + + /** + * 申请理由 + */ + private String reason; + + /** + * 现金支出金额 + */ + private BigDecimal totalMoney; + + /** + * 申请日期 + */ + private LocalDate applicationDate; + + /** + * 备注说明 + */ + private String notes; + + /** + * 用章的结果 + * + * 枚举 {@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/dataobject/oa/BpmOAContractDO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOAContractDO.java new file mode 100644 index 00000000..989257b9 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOAContractDO.java @@ -0,0 +1,97 @@ +package cn.iocoder.yudao.module.bpm.dal.dataobject.oa; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import cn.iocoder.yudao.module.bpm.controller.admin.upload.UploadUserFile; +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_contract", autoResultMap = true) +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class BpmOAContractDO extends BaseDO { + + /** + * 出差表单主键 + */ + @TableId + private Long id; + + /** + * 申请人的用户编号 + * + * 关联 AdminUserDO 的 id 属性 + */ + private Long userId; + + /** + * 合同名称 + */ + private String contractName; + + /** + * 合同编号 + */ + private String contractNumber; + + /** + * 签约日期 + */ + private LocalDate signingDate; + + /** + * 我方公司名称 + */ + private String mCompanyName; + + /** + * 我方负责人 + */ + private String mHeadName; + + /** + * 对方公司名称 + */ + private String oCompanyName; + + /** + * 对方负责人 + */ + private String oHeadName; + + /** + * 用章的结果 + * + * 枚举 {@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/dataobject/oa/BpmOaEvectionDO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOAEvectionDO.java similarity index 68% rename from yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOaEvectionDO.java rename to yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOAEvectionDO.java index cb339324..bc23d31a 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOaEvectionDO.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOAEvectionDO.java @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.bpm.dal.dataobject.oa; import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; import cn.iocoder.yudao.module.bpm.controller.admin.upload.UploadUserFile; +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; @@ -26,7 +27,7 @@ import java.util.List; @Builder @NoArgsConstructor @AllArgsConstructor -public class BpmOaEvectionDO extends BaseDO { +public class BpmOAEvectionDO extends BaseDO { /** * 出差表单主键 @@ -47,9 +48,14 @@ public class BpmOaEvectionDO extends BaseDO { private String reason; /** - * 出差地点 + * 出差地点 起点 */ - private String location; + private String startLocation; + + /** + * 出差地点 终点 + */ + private String endLocation; /** * 开始时间 @@ -66,6 +72,21 @@ public class BpmOaEvectionDO extends BaseDO { */ private BigDecimal timeLength; + /** + * 出差的结果 + * + * 枚举 {@link BpmProcessInstanceResultEnum} + * 考虑到简单,所以直接复用了 BpmProcessInstanceResultEnum 枚举,也可以自己定义一个枚举哈 + */ + private Integer result; + + /** + * 对应的流程编号 + * + * 关联 ProcessInstance 的 id 属性 + */ + private String processInstanceId; + /** * 附件基本信息 */ diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOAReimbursementDO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOAReimbursementDO.java index d7b0e26e..273b2ab1 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOAReimbursementDO.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOAReimbursementDO.java @@ -1,7 +1,7 @@ package cn.iocoder.yudao.module.bpm.dal.dataobject.oa; import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.Reimbursement; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.reimbursement.Reimbursement; import cn.iocoder.yudao.module.bpm.controller.admin.upload.UploadUserFile; import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum; import com.baomidou.mybatisplus.annotation.TableField; diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOASealDO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOASealDO.java new file mode 100644 index 00000000..3f6bd59b --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOASealDO.java @@ -0,0 +1,89 @@ +package cn.iocoder.yudao.module.bpm.dal.dataobject.oa; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import cn.iocoder.yudao.module.bpm.controller.admin.upload.UploadUserFile; +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_seal", autoResultMap = true) +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class BpmOASealDO extends BaseDO { + + /** + * 出差表单主键 + */ + @TableId + private Long id; + + /** + * 申请人的用户编号 + * + * 关联 AdminUserDO 的 id 属性 + */ + private Long userId; + + /** + * 印章类型 + */ + private String type; + + /** + * 用章原因 + */ + private String reason; + + /** + * 文件名称 + */ + private String fileName; + + /** + * 文件数量 + */ + private Long fileNumber; + + /** + * 用章日期 + */ + private LocalDate useDate; + + /** + * 用章的结果 + * + * 枚举 {@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/BpmOACashMapper.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/oa/BpmOACashMapper.java new file mode 100644 index 00000000..0806e5f9 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/oa/BpmOACashMapper.java @@ -0,0 +1,15 @@ +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.BpmOACashDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 现金支出 Mapper + * + * @author 符溶馨 + + */ +@Mapper +public interface BpmOACashMapper extends BaseMapperX { +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/oa/BpmOAContractMapper.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/oa/BpmOAContractMapper.java new file mode 100644 index 00000000..f91205eb --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/oa/BpmOAContractMapper.java @@ -0,0 +1,15 @@ +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.BpmOAContractDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 合同审批 Mapper + * + * @author 符溶馨 + + */ +@Mapper +public interface BpmOAContractMapper extends BaseMapperX { +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/oa/BpmOAEvectionMapper.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/oa/BpmOAEvectionMapper.java new file mode 100644 index 00000000..753f68ed --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/oa/BpmOAEvectionMapper.java @@ -0,0 +1,17 @@ +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.BpmOAEvectionDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 出差申请 Mapper + * + * @author 符溶馨 + + */ +@Mapper +public interface BpmOAEvectionMapper extends BaseMapperX { + + +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/oa/BpmOALeaveMapper.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/oa/BpmOALeaveMapper.java index 55d778fc..68e2aac5 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/oa/BpmOALeaveMapper.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/oa/BpmOALeaveMapper.java @@ -1,6 +1,6 @@ package cn.iocoder.yudao.module.bpm.dal.mysql.oa; -import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.BpmOALeavePageReqVO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.leave.BpmOALeavePageReqVO; import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOALeaveDO; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/oa/BpmOASealMapper.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/oa/BpmOASealMapper.java new file mode 100644 index 00000000..2ccfd93e --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/oa/BpmOASealMapper.java @@ -0,0 +1,15 @@ +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.BpmOASealDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 用章申请 Mapper + * + * @author 符溶馨 + + */ +@Mapper +public interface BpmOASealMapper extends BaseMapperX { +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOACashService.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOACashService.java new file mode 100644 index 00000000..3f4e34b2 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOACashService.java @@ -0,0 +1,34 @@ +package cn.iocoder.yudao.module.bpm.service.oa; + +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.cash.BpmOACashCreateReqVO; +import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOACashDO; + +import javax.validation.Valid; + +public interface BpmOACashService { + + /** + * 创建现金支出申请 + * + * @param userId 用户编号 + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createCash(Long userId, @Valid BpmOACashCreateReqVO createReqVO); + + /** + * 更新现金支出申请的状态 + * + * @param id 编号 + * @param result 结果 + */ + void updateCashResult(Long id, Integer result); + + /** + * 获得现金支出申请 + * + * @param id 编号 + * @return 现金支出申请 + */ + BpmOACashDO getCash(Long id); +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOACashServiceImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOACashServiceImpl.java new file mode 100644 index 00000000..f9182e1d --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOACashServiceImpl.java @@ -0,0 +1,86 @@ +package cn.iocoder.yudao.module.bpm.service.oa; + +import cn.iocoder.yudao.module.bpm.api.task.BpmProcessInstanceApi; +import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.cash.BpmOACashCreateReqVO; +import cn.iocoder.yudao.module.bpm.controller.admin.upload.UploadUserFile; +import cn.iocoder.yudao.module.bpm.convert.oa.BpmOACashConvert; +import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOACashDO; +import cn.iocoder.yudao.module.bpm.dal.mysql.oa.BpmOACashMapper; +import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum; +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_CONTRACT_NOT_EXISTS; + +/** + * OA 现金支出 Service 实现类 + * + * @author 符溶馨 + + */ +@Service +@Validated +public class BpmOACashServiceImpl extends BpmOABaseService implements BpmOACashService{ + + /** + * OA 现金支出对应的流程定义 KEY + */ + public static final String PROCESS_KEY = "oa_cash"; + + @Resource + private BpmOACashMapper cashMapper; + + @Resource + private BpmProcessInstanceApi processInstanceApi; + + @Override + public Long createCash(Long userId, BpmOACashCreateReqVO createReqVO) { + + //插入OA 出差申请 + BpmOACashDO cash = BpmOACashConvert.INSTANCE.convert(createReqVO).setUserId(userId) + .setResult(BpmProcessInstanceResultEnum.PROCESS.getResult()); + cashMapper.insert(cash) ; + + // 发起 BPM 流程 + Map processInstanceVariables = new HashMap<>(); + String processInstanceId = processInstanceApi.createProcessInstance(userId, + new BpmProcessInstanceCreateReqDTO().setProcessDefinitionKey(PROCESS_KEY) + .setVariables(processInstanceVariables).setBusinessKey(String.valueOf(cash.getId()))).getCheckedData(); + + // 将工作流的编号,更新到 OA 请假单中 + cashMapper.updateById(new BpmOACashDO().setId(cash.getId()).setProcessInstanceId(processInstanceId)); + + List fileItems = createReqVO.getFileItems() ; + //这里的逻辑,如果fileItems不为空,且有数据,那么说明是上传了附件的,则需要更工作流文件表对应的实例Id + if (fileItems != null && !fileItems.isEmpty()) { + uploadBpmFileProcessInstanceId(processInstanceId,fileItems) ; + } + return cash.getId(); + } + + @Override + public void updateCashResult(Long id, Integer result) { + + validateLeaveExists(id); + cashMapper.updateById(new BpmOACashDO().setId(id).setResult(result)); + } + + private void validateLeaveExists(Long id) { + if (cashMapper.selectById(id) == null) { + throw exception(OA_CONTRACT_NOT_EXISTS); + } + } + + @Override + public BpmOACashDO getCash(Long id) { + + return cashMapper.selectById(id); + } +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAContractService.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAContractService.java new file mode 100644 index 00000000..a59fa28b --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAContractService.java @@ -0,0 +1,34 @@ +package cn.iocoder.yudao.module.bpm.service.oa; + +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.contract.BpmOAContractCreateReqVO; +import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAContractDO; + +import javax.validation.Valid; + +public interface BpmOAContractService { + + /** + * 创建出差申请 + * + * @param userId 用户编号 + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createContract(Long userId, @Valid BpmOAContractCreateReqVO createReqVO); + + /** + * 更新出差申请的状态 + * + * @param id 编号 + * @param result 结果 + */ + void updateContractResult(Long id, Integer result); + + /** + * 获得出差申请 + * + * @param id 编号 + * @return 出差申请 + */ + BpmOAContractDO getContract(Long id); +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAContractServiceImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAContractServiceImpl.java new file mode 100644 index 00000000..b833e38d --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAContractServiceImpl.java @@ -0,0 +1,86 @@ +package cn.iocoder.yudao.module.bpm.service.oa; + +import cn.iocoder.yudao.module.bpm.api.task.BpmProcessInstanceApi; +import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.contract.BpmOAContractCreateReqVO; +import cn.iocoder.yudao.module.bpm.controller.admin.upload.UploadUserFile; +import cn.iocoder.yudao.module.bpm.convert.oa.BpmOAContractConvert; +import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAContractDO; +import cn.iocoder.yudao.module.bpm.dal.mysql.oa.BpmOAContractMapper; +import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum; +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_CONTRACT_NOT_EXISTS; + +/** + * OA 合同审批 Service 实现类 + * + * @author 符溶馨 + + */ +@Service +@Validated +public class BpmOAContractServiceImpl extends BpmOABaseService implements BpmOAContractService{ + + /** + * OA 合同审批对应的流程定义 KEY + */ + public static final String PROCESS_KEY = "oa_contract"; + + @Resource + private BpmOAContractMapper contractMapper; + + @Resource + private BpmProcessInstanceApi processInstanceApi; + + @Override + public Long createContract(Long userId, BpmOAContractCreateReqVO createReqVO) { + + //插入OA 出差申请 + BpmOAContractDO contract = BpmOAContractConvert.INSTANCE.convert(createReqVO).setUserId(userId) + .setResult(BpmProcessInstanceResultEnum.PROCESS.getResult()); + contractMapper.insert(contract) ; + + // 发起 BPM 流程 + Map processInstanceVariables = new HashMap<>(); + String processInstanceId = processInstanceApi.createProcessInstance(userId, + new BpmProcessInstanceCreateReqDTO().setProcessDefinitionKey(PROCESS_KEY) + .setVariables(processInstanceVariables).setBusinessKey(String.valueOf(contract.getId()))).getCheckedData(); + + // 将工作流的编号,更新到 OA 请假单中 + contractMapper.updateById(new BpmOAContractDO().setId(contract.getId()).setProcessInstanceId(processInstanceId)); + + List fileItems = createReqVO.getFileItems() ; + //这里的逻辑,如果fileItems不为空,且有数据,那么说明是上传了附件的,则需要更工作流文件表对应的实例Id + if (fileItems != null && !fileItems.isEmpty()) { + uploadBpmFileProcessInstanceId(processInstanceId,fileItems) ; + } + return contract.getId(); + } + + @Override + public void updateContractResult(Long id, Integer result) { + + validateLeaveExists(id); + contractMapper.updateById(new BpmOAContractDO().setId(id).setResult(result)); + } + + private void validateLeaveExists(Long id) { + if (contractMapper.selectById(id) == null) { + throw exception(OA_CONTRACT_NOT_EXISTS); + } + } + + @Override + public BpmOAContractDO getContract(Long id) { + + return contractMapper.selectById(id); + } +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAEvectionService.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAEvectionService.java new file mode 100644 index 00000000..507be6d8 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAEvectionService.java @@ -0,0 +1,34 @@ +package cn.iocoder.yudao.module.bpm.service.oa; + +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.evection.BpmOAEvectionCreateReqVO; +import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAEvectionDO; + +import javax.validation.Valid; + +public interface BpmOAEvectionService { + + /** + * 创建出差申请 + * + * @param userId 用户编号 + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createEvection(Long userId, @Valid BpmOAEvectionCreateReqVO createReqVO); + + /** + * 更新出差申请的状态 + * + * @param id 编号 + * @param result 结果 + */ + void updateEvectionResult(Long id, Integer result); + + /** + * 获得出差申请 + * + * @param id 编号 + * @return 出差申请 + */ + BpmOAEvectionDO getEvection(Long id); +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAEvectionServiceImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAEvectionServiceImpl.java new file mode 100644 index 00000000..dd8c7a72 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAEvectionServiceImpl.java @@ -0,0 +1,86 @@ +package cn.iocoder.yudao.module.bpm.service.oa; + +import cn.iocoder.yudao.module.bpm.api.task.BpmProcessInstanceApi; +import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.evection.BpmOAEvectionCreateReqVO; +import cn.iocoder.yudao.module.bpm.controller.admin.upload.UploadUserFile; +import cn.iocoder.yudao.module.bpm.convert.oa.BpmOAEvectionConvert; +import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAEvectionDO; +import cn.iocoder.yudao.module.bpm.dal.mysql.oa.BpmOAEvectionMapper; +import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum; +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_EVECTION_NOT_EXISTS; + +/** + * OA 出差申请 Service 实现类 + * + * @author 符溶馨 + + */ +@Service +@Validated +public class BpmOAEvectionServiceImpl extends BpmOABaseService implements BpmOAEvectionService { + + /** + * OA 出差对应的流程定义 KEY + */ + public static final String PROCESS_KEY = "oa_evection"; + + @Resource + private BpmOAEvectionMapper evectionMapper; + + @Resource + private BpmProcessInstanceApi processInstanceApi; + + @Override + public Long createEvection(Long userId, BpmOAEvectionCreateReqVO createReqVO) { + + //插入OA 出差申请 + BpmOAEvectionDO evection = BpmOAEvectionConvert.INSTANCE.convert(createReqVO).setUserId(userId) + .setResult(BpmProcessInstanceResultEnum.PROCESS.getResult()); + evectionMapper.insert(evection) ; + + // 发起 BPM 流程 + Map processInstanceVariables = new HashMap<>(); + String processInstanceId = processInstanceApi.createProcessInstance(userId, + new BpmProcessInstanceCreateReqDTO().setProcessDefinitionKey(PROCESS_KEY) + .setVariables(processInstanceVariables).setBusinessKey(String.valueOf(evection.getId()))).getCheckedData(); + + // 将工作流的编号,更新到 OA 请假单中 + evectionMapper.updateById(new BpmOAEvectionDO().setId(evection.getId()).setProcessInstanceId(processInstanceId)); + + List fileItems = createReqVO.getFileItems() ; + //这里的逻辑,如果fileItems不为空,且有数据,那么说明是上传了附件的,则需要更工作流文件表对应的实例Id + if (fileItems != null && !fileItems.isEmpty()) { + uploadBpmFileProcessInstanceId(processInstanceId,fileItems) ; + } + return evection.getId(); + } + + @Override + public void updateEvectionResult(Long id, Integer result) { + + validateLeaveExists(id); + evectionMapper.updateById(new BpmOAEvectionDO().setId(id).setResult(result)); + } + + private void validateLeaveExists(Long id) { + if (evectionMapper.selectById(id) == null) { + throw exception(OA_EVECTION_NOT_EXISTS); + } + } + + @Override + public BpmOAEvectionDO getEvection(Long id) { + + return evectionMapper.selectById(id); + } +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOALeaveService.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOALeaveService.java index 8a4979b1..381d6596 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOALeaveService.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOALeaveService.java @@ -2,8 +2,8 @@ package cn.iocoder.yudao.module.bpm.service.oa; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.BpmOALeaveCreateReqVO; -import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.BpmOALeavePageReqVO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.leave.BpmOALeaveCreateReqVO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.leave.BpmOALeavePageReqVO; import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOALeaveDO; import javax.validation.Valid; diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOALeaveServiceImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOALeaveServiceImpl.java index d0b2f4b5..093abf57 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOALeaveServiceImpl.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOALeaveServiceImpl.java @@ -2,18 +2,15 @@ package cn.iocoder.yudao.module.bpm.service.oa; import cn.hutool.core.date.LocalDateTimeUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.json.JsonUtils; import cn.iocoder.yudao.module.bpm.api.task.BpmProcessInstanceApi; import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO; -import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.BpmOALeaveCreateReqVO; -import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.BpmOALeavePageReqVO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.leave.BpmOALeaveCreateReqVO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.leave.BpmOALeavePageReqVO; import cn.iocoder.yudao.module.bpm.controller.admin.upload.UploadUserFile; import cn.iocoder.yudao.module.bpm.convert.oa.BpmOALeaveConvert; import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOALeaveDO; import cn.iocoder.yudao.module.bpm.dal.mysql.oa.BpmOALeaveMapper; import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum; -import cn.iocoder.yudao.module.infra.api.file.FileApi; -import cn.iocoder.yudao.module.infra.api.file.dto.FileCreateReqDTO; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; @@ -22,7 +19,6 @@ import javax.annotation.Resource; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.stream.Collectors; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.module.bpm.enums.ErrorCodeConstants.OA_LEAVE_NOT_EXISTS; diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAReimbursementService.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAReimbursementService.java index 0cff20a6..ce8f7c2a 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAReimbursementService.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAReimbursementService.java @@ -1,11 +1,7 @@ package cn.iocoder.yudao.module.bpm.service.oa; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.BpmOALeaveCreateReqVO; -import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.BpmOALeavePageReqVO; -import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.BpmOAReimbursementCreateReqVO; -import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOALeaveDO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.reimbursement.BpmOAReimbursementCreateReqVO; import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAReimbursementDO; import javax.validation.Valid; diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAReimbursementServiceImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAReimbursementServiceImpl.java index 2bbbf0de..e1ebf9a8 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAReimbursementServiceImpl.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAReimbursementServiceImpl.java @@ -2,11 +2,9 @@ package cn.iocoder.yudao.module.bpm.service.oa; import cn.iocoder.yudao.module.bpm.api.task.BpmProcessInstanceApi; import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO; -import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.BpmOAReimbursementCreateReqVO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.reimbursement.BpmOAReimbursementCreateReqVO; import cn.iocoder.yudao.module.bpm.controller.admin.upload.UploadUserFile; -import cn.iocoder.yudao.module.bpm.convert.oa.BpmOALeaveConvert; import cn.iocoder.yudao.module.bpm.convert.oa.BpmOAReimbursementConvert; -import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOALeaveDO; import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAReimbursementDO; import cn.iocoder.yudao.module.bpm.dal.mysql.oa.BpmOAReimbursementMapper; import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum; @@ -20,7 +18,6 @@ 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_LEAVE_NOT_EXISTS; import static cn.iocoder.yudao.module.bpm.enums.ErrorCodeConstants.OA_REIMBURSEMENT_NOT_EXISTS; /** diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOASealService.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOASealService.java new file mode 100644 index 00000000..5572d32a --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOASealService.java @@ -0,0 +1,34 @@ +package cn.iocoder.yudao.module.bpm.service.oa; + +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.seal.BpmOASealCreateReqVO; +import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOASealDO; + +import javax.validation.Valid; + +public interface BpmOASealService { + + /** + * 创建用章申请 + * + * @param userId 用户编号 + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createSeal(Long userId, @Valid BpmOASealCreateReqVO createReqVO); + + /** + * 更新用章申请的状态 + * + * @param id 编号 + * @param result 结果 + */ + void updateSealResult(Long id, Integer result); + + /** + * 获得用章申请 + * + * @param id 编号 + * @return 用章申请 + */ + BpmOASealDO getSeal(Long id); +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOASealServiceImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOASealServiceImpl.java new file mode 100644 index 00000000..9f4de420 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOASealServiceImpl.java @@ -0,0 +1,86 @@ +package cn.iocoder.yudao.module.bpm.service.oa; + +import cn.iocoder.yudao.module.bpm.api.task.BpmProcessInstanceApi; +import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.seal.BpmOASealCreateReqVO; +import cn.iocoder.yudao.module.bpm.controller.admin.upload.UploadUserFile; +import cn.iocoder.yudao.module.bpm.convert.oa.BpmOASealConvert; +import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOASealDO; +import cn.iocoder.yudao.module.bpm.dal.mysql.oa.BpmOASealMapper; +import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum; +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_SEAL_NOT_EXISTS; + +/** + * OA 用章申请 Service 实现类 + * + * @author 符溶馨 + + */ +@Service +@Validated +public class BpmOASealServiceImpl extends BpmOABaseService implements BpmOASealService { + + /** + * OA 出差对应的流程定义 KEY + */ + public static final String PROCESS_KEY = "oa_seal"; + + @Resource + private BpmOASealMapper sealMapper; + + @Resource + private BpmProcessInstanceApi processInstanceApi; + + @Override + public Long createSeal(Long userId, BpmOASealCreateReqVO createReqVO) { + + //插入OA 出差申请 + BpmOASealDO seal = BpmOASealConvert.INSTANCE.convert(createReqVO).setUserId(userId) + .setResult(BpmProcessInstanceResultEnum.PROCESS.getResult()); + sealMapper.insert(seal) ; + + // 发起 BPM 流程 + Map processInstanceVariables = new HashMap<>(); + String processInstanceId = processInstanceApi.createProcessInstance(userId, + new BpmProcessInstanceCreateReqDTO().setProcessDefinitionKey(PROCESS_KEY) + .setVariables(processInstanceVariables).setBusinessKey(String.valueOf(seal.getId()))).getCheckedData(); + + // 将工作流的编号,更新到 OA 请假单中 + sealMapper.updateById(new BpmOASealDO().setId(seal.getId()).setProcessInstanceId(processInstanceId)); + + List fileItems = createReqVO.getFileItems() ; + //这里的逻辑,如果fileItems不为空,且有数据,那么说明是上传了附件的,则需要更工作流文件表对应的实例Id + if (fileItems != null && !fileItems.isEmpty()) { + uploadBpmFileProcessInstanceId(processInstanceId,fileItems) ; + } + return seal.getId(); + } + + @Override + public void updateSealResult(Long id, Integer result) { + + validateLeaveExists(id); + sealMapper.updateById(new BpmOASealDO().setId(id).setResult(result)); + } + + private void validateLeaveExists(Long id) { + if (sealMapper.selectById(id) == null) { + throw exception(OA_SEAL_NOT_EXISTS); + } + } + + @Override + public BpmOASealDO getSeal(Long id) { + + return sealMapper.selectById(id); + } +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/listener/BpmOACashResultListener.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/listener/BpmOACashResultListener.java new file mode 100644 index 00000000..82183be9 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/listener/BpmOACashResultListener.java @@ -0,0 +1,30 @@ +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.BpmOACashService; +import cn.iocoder.yudao.module.bpm.service.oa.BpmOACashServiceImpl; + +import javax.annotation.Resource; + +/** + * OA 现金支出的结果的监听器实现类 + * + * @author 符溶馨 + */ +public class BpmOACashResultListener extends BpmProcessInstanceResultEventListener { + @Resource + private BpmOACashService cashService; + + @Override + protected String getProcessDefinitionKey() { + + return BpmOACashServiceImpl.PROCESS_KEY; + } + + @Override + protected void onEvent(BpmProcessInstanceResultEvent event) { + + cashService.updateCashResult(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/BpmOAContractResultListener.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/listener/BpmOAContractResultListener.java new file mode 100644 index 00000000..7c526210 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/listener/BpmOAContractResultListener.java @@ -0,0 +1,31 @@ +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.BpmOAContractService; +import cn.iocoder.yudao.module.bpm.service.oa.BpmOAContractServiceImpl; + +import javax.annotation.Resource; + +/** + * OA 合同审批单的结果的监听器实现类 + * + * @author 符溶馨 + */ +public class BpmOAContractResultListener extends BpmProcessInstanceResultEventListener { + + @Resource + private BpmOAContractService contractService; + + @Override + protected String getProcessDefinitionKey() { + + return BpmOAContractServiceImpl.PROCESS_KEY; + } + + @Override + protected void onEvent(BpmProcessInstanceResultEvent event) { + + contractService.updateContractResult(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/BpmOAEvectionResultListener.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/listener/BpmOAEvectionResultListener.java new file mode 100644 index 00000000..8b1d9bdc --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/listener/BpmOAEvectionResultListener.java @@ -0,0 +1,29 @@ +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.BpmOAEvectionService; +import cn.iocoder.yudao.module.bpm.service.oa.BpmOAEvectionServiceImpl; + +import javax.annotation.Resource; + +/** + * OA 出差单的结果的监听器实现类 + * + * @author 符溶馨 + */ +public class BpmOAEvectionResultListener extends BpmProcessInstanceResultEventListener { + + @Resource + private BpmOAEvectionService evectionService; + + @Override + protected String getProcessDefinitionKey() { + return BpmOAEvectionServiceImpl.PROCESS_KEY; + } + + @Override + protected void onEvent(BpmProcessInstanceResultEvent event) { + evectionService.updateEvectionResult(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/BpmOASealResultListener.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/listener/BpmOASealResultListener.java new file mode 100644 index 00000000..aed64280 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/listener/BpmOASealResultListener.java @@ -0,0 +1,30 @@ +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.BpmOASealService; +import cn.iocoder.yudao.module.bpm.service.oa.BpmOASealServiceImpl; + +import javax.annotation.Resource; + +/** + * OA 用章单的结果的监听器实现类 + * + * @author 符溶馨 + */ +public class BpmOASealResultListener extends BpmProcessInstanceResultEventListener { + + @Resource + private BpmOASealService sealService; + + @Override + protected String getProcessDefinitionKey() { + + return BpmOASealServiceImpl.PROCESS_KEY; + } + + @Override + protected void onEvent(BpmProcessInstanceResultEvent event) { + sealService.updateSealResult(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/task/BpmTaskServiceImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskServiceImpl.java index 4e6ca728..a6e961f7 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskServiceImpl.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskServiceImpl.java @@ -379,15 +379,25 @@ public class BpmTaskServiceImpl implements BpmTaskService { AdminUserRespDTO examineUser = adminUserApi.getUser(userId).getCheckedData(); // 获取岗位信息 Set postIds = examineUser.getPostIds(); + // 获取部门信息 + Long deptId = examineUser.getDeptId(); + if( postIds == null || postIds.isEmpty() ) { // 当前审批用户未配置岗位 // 操作失败,原因:您未配置岗位,请联系管理员操作 throw exception(TASK_OPERATE_FAIL_USER_NO_POST); } + if( deptId == null ) { + // 当前审批用户未配置部门 + // 操作失败,原因:您未配置部门,请联系管理员操作 + throw exception(TASK_OPERATE_FAIL_USER_NO_DEPT); + } + ArrayList list = new ArrayList<>(postIds); // 只获配置的首个岗位 - Long postId = list.get(0) ; - paramMap.put("post_id",postId.toString()) ; + Long postId = list.get(0); + paramMap.put("post_id", postId.toString()); + paramMap.put("dept_id", deptId.toString()); paramMap.put("approve_reason",reqVO.getReason()) ; //通过原因---因为Task任务的通过,是通过监听事件处理的,reason数据无法传递给监听函数。所以通过此中方法传递 taskService.complete(task.getId(), paramMap); // 更新任务拓展表为通过