Merge remote-tracking branch 'origin/main'

# Conflicts:
#	yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskServiceImpl.java
This commit is contained in:
Echo 2024-02-27 10:52:27 +08:00
commit 9476a9c243
55 changed files with 1701 additions and 57 deletions

View File

@ -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, "流程({}) 的任务({}) 已经存在分配规则");

View File

@ -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<Long> 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<BpmOACashRespVO> getCash(@RequestParam("id") Long id) {
BpmOACashDO cash = cashService.getCash(id);
return success(BpmOACashConvert.INSTANCE.convert(cash));
}
}

View File

@ -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<Long> 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<BpmOAContractRespVO> getContract(@RequestParam("id") Long id) {
BpmOAContractDO contract = contractService.getContract(id);
return success(BpmOAContractConvert.INSTANCE.convert(contract));
}
}

View File

@ -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<Long> 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<BpmOAEvectionRespVO> getEvection(@RequestParam("id") Long id) {
BpmOAEvectionDO evection = evectionService.getEvection(id);
return success(BpmOAEvectionConvert.INSTANCE.convert(evection));
}
}

View File

@ -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;

View File

@ -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.*;

View File

@ -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<Long> 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<BpmOASealRespVO> getSeal(@RequestParam("id") Long id) {
BpmOASealDO seal = sealService.getSeal(id);
return success(BpmOASealConvert.INSTANCE.convert(seal));
}
}

View File

@ -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<UploadUserFile> fileItems;
}

View File

@ -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<UploadUserFile> fileItems;
}

View File

@ -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<UploadUserFile> fileItems;
}

View File

@ -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<UploadUserFile> fileItems;
}

View File

@ -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<UploadUserFile> fileItems;
}

View File

@ -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<UploadUserFile> fileItems;
}

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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()

View File

@ -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 = "报销项目不能为空")

View File

@ -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;
/**

View File

@ -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<UploadUserFile> fileItems;
}

View File

@ -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<UploadUserFile> fileItems;
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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;

View File

@ -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
*

View File

@ -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);
}

View File

@ -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<UploadUserFile> fileItems ;
}

View File

@ -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<UploadUserFile> fileItems ;
}

View File

@ -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;
/**
* 附件基本信息
*/

View File

@ -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;

View File

@ -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<UploadUserFile> fileItems ;
}

View File

@ -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<BpmOACashDO> {
}

View File

@ -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<BpmOAContractDO> {
}

View File

@ -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<BpmOAEvectionDO> {
}

View File

@ -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;

View File

@ -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<BpmOASealDO> {
}

View File

@ -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);
}

View File

@ -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<String, Object> 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<UploadUserFile> 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);
}
}

View File

@ -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);
}

View File

@ -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<String, Object> 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<UploadUserFile> 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);
}
}

View File

@ -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);
}

View File

@ -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<String, Object> 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<UploadUserFile> 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);
}
}

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;
/**

View File

@ -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);
}

View File

@ -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<String, Object> 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<UploadUserFile> 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);
}
}

View File

@ -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());
}
}

View File

@ -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());
}
}

View File

@ -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());
}
}

View File

@ -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());
}
}

View File

@ -379,15 +379,25 @@ public class BpmTaskServiceImpl implements BpmTaskService {
AdminUserRespDTO examineUser = adminUserApi.getUser(userId).getCheckedData();
// 获取岗位信息
Set<Long> 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<Long> 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);
// 更新任务拓展表为通过