From 01d45d5fc4823d8d70ebc778d3e889c859f7f562 Mon Sep 17 00:00:00 2001 From: furongxin <419481438@qq.com> Date: Tue, 17 Sep 2024 11:43:47 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=96=AA=E8=B5=84=E4=BB=98?= =?UTF-8?q?=E6=AC=BE=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/bpm/enums/ErrorCodeConstants.java | 1 + .../admin/oa/BpmOASalaryController.java | 82 +++++++++++++++++++ .../admin/oa/vo/salary/BpmOASalaryRespVO.java | 3 + .../service/oa/BpmOASalaryServiceImpl.java | 16 +++- .../listener/BpmOASalaryResultListener.java | 32 ++++++++ 5 files changed, 132 insertions(+), 2 deletions(-) create mode 100644 yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOASalaryController.java create mode 100644 yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/listener/BpmOASalaryResultListener.java 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 1bcd6d59..eb02a3e7 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 @@ -36,6 +36,7 @@ public interface ErrorCodeConstants { ErrorCode OA_WORK_TASK_NOT_EXISTS = new ErrorCode(1_009_001_110, "工作任务不存在"); ErrorCode OA_ENTRY_NOT_EXISTS = new ErrorCode(1_009_001_111, "入职申请不存在"); ErrorCode OA_GOOut_NOT_EXISTS = new ErrorCode(1_009_001_112, "外出申请不存在"); + ErrorCode OA_SALARY_NOT_EXISTS = new ErrorCode(1_009_001_113, "薪资付款申请不存在"); // ========== 流程模型 1-009-002-000 ========== ErrorCode MODEL_KEY_EXISTS = new ErrorCode(1_009_002_000, "已经存在流程标识为【{}】的流程"); diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOASalaryController.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOASalaryController.java new file mode 100644 index 00000000..969e6cad --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOASalaryController.java @@ -0,0 +1,82 @@ +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.salary.BpmOASalaryCreateReqVO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.salary.BpmOASalaryRespVO; +import cn.iocoder.yudao.module.bpm.convert.oa.BpmOASalaryConvert; +import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOASalaryDO; +import cn.iocoder.yudao.module.bpm.service.oa.BpmOASalaryService; +import cn.iocoder.yudao.module.system.api.dept.DeptApi; +import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO; +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/salary") +@Validated +public class BpmOASalaryController { + + @Resource + private BpmOASalaryService salaryService; + + @Resource + private DeptApi deptApi; + + @PostMapping("/create") + @Operation(summary = "创建请求申请") + public CommonResult createSalary(@Valid @RequestBody BpmOASalaryCreateReqVO createReqVO) { + + return success(salaryService.createSalary(getLoginUserId(), createReqVO)); + } + + @GetMapping("/get") + @Operation(summary = "获得薪资付款申请") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + public CommonResult getSalary(@RequestParam("id") Long id) { + + BpmOASalaryDO salary = salaryService.getSalary(id); + + return success(BpmOASalaryConvert.INSTANCE.convert(salary) + .setCompanyName(getDept(salary.getCompanyDeptId()).getName())); + } + + @GetMapping("/getByProcessInstanceId") + @Operation(summary = "获得薪资付款申请") + @Parameter(name = "processInstanceId", description = "流程实例编号", required = true, example = "1024") + public CommonResult getByProcessInstanceId(@RequestParam("processInstanceId") String processInstanceId) { + + BpmOASalaryDO salary = salaryService.getByProcessInstanceId(processInstanceId); + + return success(BpmOASalaryConvert.INSTANCE.convert(salary) + .setCompanyName(getDept(salary.getCompanyDeptId()).getName())); + } + + /** + * 获得部门信息 + * @param deptId 部门id + * @return 部门信息 + */ + public DeptRespDTO getDept(Long deptId) { + + if (deptId == null) { + return new DeptRespDTO(); + } + return deptApi.getDept(deptId).getCheckedData(); + } +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/salary/BpmOASalaryRespVO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/salary/BpmOASalaryRespVO.java index b221f362..5e73265f 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/salary/BpmOASalaryRespVO.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/salary/BpmOASalaryRespVO.java @@ -30,6 +30,9 @@ public class BpmOASalaryRespVO extends BpmOABaseRespVO { @Schema(description = "付款公司") private Long companyDeptId; + @Schema(description = "付款公司名称") + private String companyName; + @Schema(description = "付款总额") private BigDecimal paymentTotal; diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOASalaryServiceImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOASalaryServiceImpl.java index 3094e878..b01cdda3 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOASalaryServiceImpl.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOASalaryServiceImpl.java @@ -17,6 +17,9 @@ 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_SALARY_NOT_EXISTS; + /** * OA 薪资付款申请 Service 实现类 * @@ -73,16 +76,25 @@ public class BpmOASalaryServiceImpl extends BpmOABaseService implements BpmOASal @Override public void updateSalaryResult(Long id, Integer result) { + validateLeaveExists(id); + salaryMapper.updateById(new BpmOASalaryDO().setId(id).setResult(result)); + } + private void validateLeaveExists(Long id) { + if (salaryMapper.selectById(id) == null) { + throw exception(OA_SALARY_NOT_EXISTS); + } } @Override public BpmOASalaryDO getSalary(Long id) { - return null; + + return salaryMapper.selectById(id); } @Override public BpmOASalaryDO getByProcessInstanceId(String processInstanceId) { - return null; + + return salaryMapper.selectOne(BpmOASalaryDO::getProcessInstanceId, processInstanceId); } } diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/listener/BpmOASalaryResultListener.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/listener/BpmOASalaryResultListener.java new file mode 100644 index 00000000..27a63148 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/listener/BpmOASalaryResultListener.java @@ -0,0 +1,32 @@ +package cn.iocoder.yudao.module.bpm.service.oa.listener; + +import cn.iocoder.yudao.module.bpm.framework.bpm.core.event.BpmProcessInstanceResultEvent; +import cn.iocoder.yudao.module.bpm.framework.bpm.core.event.BpmProcessInstanceResultEventListener; +import cn.iocoder.yudao.module.bpm.service.oa.BpmOASalaryService; +import cn.iocoder.yudao.module.bpm.service.oa.BpmOASalaryServiceImpl; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + * OA 用章单的结果的监听器实现类 + * + * @author 符溶馨 + */ +@Component +public class BpmOASalaryResultListener extends BpmProcessInstanceResultEventListener { + + @Resource + private BpmOASalaryService SalaryService; + + @Override + protected String getProcessDefinitionKey() { + + return BpmOASalaryServiceImpl.PROCESS_KEY; + } + + @Override + protected void onEvent(BpmProcessInstanceResultEvent event) { + SalaryService.updateSalaryResult(Long.parseLong(event.getBusinessKey()), event.getResult()); + } +}