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