From ac4e06edf7f65dc35c3eb76c93d7466688bc0ae0 Mon Sep 17 00:00:00 2001 From: ligaode Date: Mon, 2 Dec 2024 15:42:12 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/dictcommon/DictCommonFeign.java | 5 + .../dictcommon/DictCommonFeignFallback.java | 5 + .../portal/biz/dictcommon/DictCommonRest.java | 7 + .../oa/leaveapply/AppLeaveApplyDetailsVo.java | 87 +++ .../api/oa/leaveapply/AppLeaveApplyDto.java | 99 +++ .../api/oa/leaveapply/AppLeaveApplyFeign.java | 73 ++ .../oa/leaveapply/AppLeaveApplyInitVo.java | 91 +++ .../api/oa/leaveapply/AppLeaveType.java | 11 + .../leaveapply/flowable/AppDelegateQuery.java | 25 + .../oa/leaveapply/flowable/AppFlowDto.java | 37 ++ .../oa/leaveapply/flowable/AppFlowQuery.java | 28 + .../leaveapply/flowable/AppFlowTaskQuery.java | 47 ++ .../flowable/SubmitAppLeaveApplyDto.java | 24 + .../AppSpecialRebateDetailsVo.java | 45 +- .../AppSpecialrebateCheckapplyFeign.java | 4 + .../anrui/terminal/TerminalApplication.java | 2 +- .../biz/oa/leaveapply/AppLeaveApplyRest.java | 93 +++ .../oa/leaveapply/AppLeaveApplyService.java | 187 ++++++ .../AppSpecialrebateCheckapplyRest.java | 5 + .../AppSpecialrebateCheckapplyService.java | 14 +- .../oaleaveapply/OaLeaveApplyDetailsVo.java | 97 +++ .../fegin/oaleaveapply/OaLeaveApplyDto.java | 101 +++ .../fegin/oaleaveapply/OaLeaveApplyFeign.java | 72 ++ .../oaleaveapply/OaLeaveApplyInitVo.java | 101 +++ .../fegin/oaleaveapply/OaLeaveType.java | 11 + .../flowable/OaLeaveApplyCompleteDto.java | 37 ++ .../flowable/OaLeaveApplyDelegateQuery.java | 26 + .../flowable/OaLeaveApplyNodeQuery.java | 25 + .../flowable/OaLeaveApplyNodeVo.java | 26 + .../flowable/OaLeaveApplyTaskQuery.java | 48 ++ .../flowable/SubmitOaLeaveApplyDto.java | 24 + .../api/asbusrepairbill/AsBusrepairBill.java | 2 + .../AsArrearsoutApplyService.java | 16 +- .../AsBusclaimInvoiceBillService.java | 8 +- yxt-oa/pom.xml | 92 +++ .../java/com/yxt/anrui/oa/OaApplication.java | 21 + .../yxt/anrui/oa/api/OaLeaveApplyRest.java | 146 ++++ .../anrui/oa/biz/oaappendix/OaAppendix.java | 53 ++ .../biz/oaappendix/OaAppendixDetailsVo.java | 52 ++ .../oa/biz/oaappendix/OaAppendixDto.java | 52 ++ .../oa/biz/oaappendix/OaAppendixMapper.java | 39 ++ .../oa/biz/oaappendix/OaAppendixMapper.xml | 6 + .../oa/biz/oaappendix/OaAppendixService.java | 39 ++ .../oa/biz/oaleaveapply/OaLeaveApply.java | 95 +++ .../oaleaveapply/OaLeaveApplyDetailsVo.java | 101 +++ .../oa/biz/oaleaveapply/OaLeaveApplyDto.java | 103 +++ .../biz/oaleaveapply/OaLeaveApplyInitVo.java | 103 +++ .../biz/oaleaveapply/OaLeaveApplyMapper.java | 59 ++ .../biz/oaleaveapply/OaLeaveApplyMapper.xml | 42 ++ .../biz/oaleaveapply/OaLeaveApplyQuery.java | 93 +++ .../biz/oaleaveapply/OaLeaveApplyService.java | 628 ++++++++++++++++++ .../oa/biz/oaleaveapply/OaLeaveApplyVo.java | 94 +++ .../oa/biz/oaleaveapply/OaLeaveType.java | 11 + .../flowable/OaLeaveApplyCompleteDto.java | 37 ++ .../flowable/OaLeaveApplyDelegateQuery.java | 26 + .../flowable/OaLeaveApplyNodeQuery.java | 25 + .../flowable/OaLeaveApplyNodeVo.java | 26 + .../flowable/OaLeaveApplyTaskQuery.java | 48 ++ .../flowable/SubmitOaLeaveApplyDto.java | 24 + .../com/yxt/anrui/oa/feign/base/BillNo.java | 24 + .../com/yxt/anrui/oa/feign/base/Rule.java | 44 ++ .../yxt/anrui/oa/feign/file/OaFileEnum.java | 38 ++ .../flowable/flow/BusinessVariables.java | 65 ++ .../flowable/flow/FlowProcessMapQuery.java | 20 + .../oa/feign/flowable/flow/FlowableFeign.java | 38 ++ .../oa/feign/flowable/flow/ProcDefEnum.java | 38 ++ .../flowable/flow/UpdateFlowFieldVo.java | 68 ++ .../flowable/flow2/FlowDelegateQuery.java | 23 + .../oa/feign/flowable/flow2/FlowFeign.java | 36 + .../flowable/flowtask/FlowTaskFeign.java | 31 + .../feign/flowable/flowtask/FlowTaskVo.java | 53 ++ .../feign/flowable/flowtask/LatestTaskVo.java | 34 + .../anrui/oa/feign/message/MessageFeign.java | 26 + .../anrui/oa/feign/message/MessageFlowVo.java | 21 + .../feign/message/MessageFlowableQuery.java | 32 + .../oa/feign/message/PushMessageQuery.java | 34 + .../feign/portal/dictcommon/DictCommon.java | 25 + .../portal/dictcommon/DictCommonFeign.java | 25 + .../sysorganization/SysOrganization.java | 92 +++ .../sysorganization/SysOrganizationFeign.java | 35 + .../sysorganization/SysOrganizationVo.java | 88 +++ .../portal/sysstafforg/SysStaffOrgFeign.java | 25 + .../portal/sysuserrole/SysUserRoleFeign.java | 22 + .../oa/feign/privilege/PrivilegeQuery.java | 22 + .../yxt/anrui/oa/feign/sysuser/OrgList.java | 21 + .../anrui/oa/feign/sysuser/SysUserFeign.java | 27 + .../yxt/anrui/oa/feign/sysuser/SysUserVo.java | 97 +++ .../src/main/resources/application-devv.yml | 33 + yxt-oa/src/main/resources/application-pro.yml | 28 + .../src/main/resources/application-test.yml | 31 + yxt-oa/src/main/resources/application.yml | 62 ++ yxt-oa/src/main/resources/banner.txt | 13 + yxt-oa/src/main/resources/logback-spring.xml | 50 ++ .../{vehfleet => oa}/VehfleetApplication.java | 4 +- 94 files changed, 4798 insertions(+), 25 deletions(-) create mode 100644 anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/oa/leaveapply/AppLeaveApplyDetailsVo.java create mode 100644 anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/oa/leaveapply/AppLeaveApplyDto.java create mode 100644 anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/oa/leaveapply/AppLeaveApplyFeign.java create mode 100644 anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/oa/leaveapply/AppLeaveApplyInitVo.java create mode 100644 anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/oa/leaveapply/AppLeaveType.java create mode 100644 anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/oa/leaveapply/flowable/AppDelegateQuery.java create mode 100644 anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/oa/leaveapply/flowable/AppFlowDto.java create mode 100644 anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/oa/leaveapply/flowable/AppFlowQuery.java create mode 100644 anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/oa/leaveapply/flowable/AppFlowTaskQuery.java create mode 100644 anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/oa/leaveapply/flowable/SubmitAppLeaveApplyDto.java create mode 100644 anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/oa/leaveapply/AppLeaveApplyRest.java create mode 100644 anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/oa/leaveapply/AppLeaveApplyService.java create mode 100644 anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/oaleaveapply/OaLeaveApplyDetailsVo.java create mode 100644 anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/oaleaveapply/OaLeaveApplyDto.java create mode 100644 anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/oaleaveapply/OaLeaveApplyFeign.java create mode 100644 anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/oaleaveapply/OaLeaveApplyInitVo.java create mode 100644 anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/oaleaveapply/OaLeaveType.java create mode 100644 anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/oaleaveapply/flowable/OaLeaveApplyCompleteDto.java create mode 100644 anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/oaleaveapply/flowable/OaLeaveApplyDelegateQuery.java create mode 100644 anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/oaleaveapply/flowable/OaLeaveApplyNodeQuery.java create mode 100644 anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/oaleaveapply/flowable/OaLeaveApplyNodeVo.java create mode 100644 anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/oaleaveapply/flowable/OaLeaveApplyTaskQuery.java create mode 100644 anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/oaleaveapply/flowable/SubmitOaLeaveApplyDto.java create mode 100644 yxt-oa/pom.xml create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/OaApplication.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/api/OaLeaveApplyRest.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaappendix/OaAppendix.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaappendix/OaAppendixDetailsVo.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaappendix/OaAppendixDto.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaappendix/OaAppendixMapper.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaappendix/OaAppendixMapper.xml create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaappendix/OaAppendixService.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/OaLeaveApply.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/OaLeaveApplyDetailsVo.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/OaLeaveApplyDto.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/OaLeaveApplyInitVo.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/OaLeaveApplyMapper.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/OaLeaveApplyMapper.xml create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/OaLeaveApplyQuery.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/OaLeaveApplyService.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/OaLeaveApplyVo.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/OaLeaveType.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/flowable/OaLeaveApplyCompleteDto.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/flowable/OaLeaveApplyDelegateQuery.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/flowable/OaLeaveApplyNodeQuery.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/flowable/OaLeaveApplyNodeVo.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/flowable/OaLeaveApplyTaskQuery.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/flowable/SubmitOaLeaveApplyDto.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/feign/base/BillNo.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/feign/base/Rule.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/feign/file/OaFileEnum.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flow/BusinessVariables.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flow/FlowProcessMapQuery.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flow/FlowableFeign.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flow/ProcDefEnum.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flow/UpdateFlowFieldVo.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flow2/FlowDelegateQuery.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flow2/FlowFeign.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flowtask/FlowTaskFeign.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flowtask/FlowTaskVo.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flowtask/LatestTaskVo.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/feign/message/MessageFeign.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/feign/message/MessageFlowVo.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/feign/message/MessageFlowableQuery.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/feign/message/PushMessageQuery.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/feign/portal/dictcommon/DictCommon.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/feign/portal/dictcommon/DictCommonFeign.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/feign/portal/sysorganization/SysOrganization.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/feign/portal/sysorganization/SysOrganizationFeign.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/feign/portal/sysorganization/SysOrganizationVo.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/feign/portal/sysstafforg/SysStaffOrgFeign.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/feign/portal/sysuserrole/SysUserRoleFeign.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/feign/privilege/PrivilegeQuery.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/feign/sysuser/OrgList.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/feign/sysuser/SysUserFeign.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/feign/sysuser/SysUserVo.java create mode 100644 yxt-oa/src/main/resources/application-devv.yml create mode 100644 yxt-oa/src/main/resources/application-pro.yml create mode 100644 yxt-oa/src/main/resources/application-test.yml create mode 100644 yxt-oa/src/main/resources/application.yml create mode 100644 yxt-oa/src/main/resources/banner.txt create mode 100644 yxt-oa/src/main/resources/logback-spring.xml rename yxt-vehfleet/src/main/java/com/yxt/anrui/{vehfleet => oa}/VehfleetApplication.java (90%) diff --git a/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/dictcommon/DictCommonFeign.java b/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/dictcommon/DictCommonFeign.java index d4c0f08e33..b6acd9ed7b 100644 --- a/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/dictcommon/DictCommonFeign.java +++ b/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/dictcommon/DictCommonFeign.java @@ -67,4 +67,9 @@ public interface DictCommonFeign { @ResponseBody @ApiOperation("根据数据字典value查询key") ResultBean selectByValue(@RequestParam("dictValue") String dictValue); + + @GetMapping("/selectByType") + @ResponseBody + @ApiOperation("根据字典类型查询") + ResultBean> selectByType(@RequestParam("dictValue") String dictValue); } diff --git a/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/dictcommon/DictCommonFeignFallback.java b/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/dictcommon/DictCommonFeignFallback.java index 3091616d72..6b424cdb2f 100644 --- a/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/dictcommon/DictCommonFeignFallback.java +++ b/anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/dictcommon/DictCommonFeignFallback.java @@ -59,4 +59,9 @@ public class DictCommonFeignFallback implements DictCommonFeign { public ResultBean selectByValue(String dictValue) { return null; } + + @Override + public ResultBean> selectByType(String dictValue) { + return null; + } } diff --git a/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/dictcommon/DictCommonRest.java b/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/dictcommon/DictCommonRest.java index 0cea0a270d..c818d08f99 100644 --- a/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/dictcommon/DictCommonRest.java +++ b/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/dictcommon/DictCommonRest.java @@ -150,4 +150,11 @@ public class DictCommonRest implements DictCommonFeign { String dictKey = dictCommonService.selectByValue(dictValue); return rb.success().setData(dictKey); } + + @Override + public ResultBean> selectByType(String dictValue) { + ResultBean rb = ResultBean.fireFail(); + List dictCommons = dictCommonService.selectByType(dictValue); + return rb.success().setData(dictCommons); + } } diff --git a/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/oa/leaveapply/AppLeaveApplyDetailsVo.java b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/oa/leaveapply/AppLeaveApplyDetailsVo.java new file mode 100644 index 0000000000..9d5ab216ae --- /dev/null +++ b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/oa/leaveapply/AppLeaveApplyDetailsVo.java @@ -0,0 +1,87 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.terminal.api.oa.leaveapply; + + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * Project: yxt-oa(请假申请)
+ * File: OaLeaveApplyVo.java
+ * Class: com.yxt.anrui.oa.api.oaleaveapply.OaLeaveApplyVo
+ * Description: 请假申请 视图数据对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2024-11-28 15:24:37
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Data +@ApiModel(value = "请假申请 视图数据详情", description = "请假申请 视图数据详情") +public class AppLeaveApplyDetailsVo implements Vo { + + private String sid; + + @ApiModelProperty("请假类型key") + private String typeKey; + @ApiModelProperty("请假类型value") + private String typeValue; + @ApiModelProperty("开始时间") + private String startTime; + @ApiModelProperty("结束时间") + private String endTime; + @ApiModelProperty("时长") + private String duration; + @ApiModelProperty("天数") + private String days; + @ApiModelProperty("请假事由") + private String remarks; + @ApiModelProperty("图片") + private List files = new ArrayList<>(); + @ApiModelProperty("单据编号") + private String billNo; // 单据编号 + @ApiModelProperty("申请人") + private String createByName; // 申请人 + @ApiModelProperty("申请部门名称") + private String deptName; // 申请部门名称 + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + @ApiModelProperty("申请日期") + private Date createTime; + @ApiModelProperty("实例id") + private String procInsId; // 实例id + @ApiModelProperty("任务id") + private String taskId; // 任务id +} \ No newline at end of file diff --git a/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/oa/leaveapply/AppLeaveApplyDto.java b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/oa/leaveapply/AppLeaveApplyDto.java new file mode 100644 index 0000000000..7c99bf42ea --- /dev/null +++ b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/oa/leaveapply/AppLeaveApplyDto.java @@ -0,0 +1,99 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.terminal.api.oa.leaveapply; + + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.yxt.common.core.dto.Dto; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * Project: yxt-oa(请假申请)
+ * File: OaLeaveApplyDto.java
+ * Class: com.yxt.anrui.oa.api.oaleaveapply.OaLeaveApplyDto
+ * Description: 请假申请 数据传输对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2024-11-28 15:24:37
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Data +@ApiModel(value = "请假申请 数据传输对象", description = "请假申请 数据传输对象") +public class AppLeaveApplyDto implements Dto { + + private String sid; // sid + private String userSid; + private String orgPath; + + @ApiModelProperty("单据编号") + private String billNo; // 单据编号 + @ApiModelProperty("申请人") + private String createByName; // 申请人 + @ApiModelProperty("申请部门sid") + private String deptSid; // 申请部门sid + @ApiModelProperty("申请部门名称") + private String deptName; // 申请部门名称 + @ApiModelProperty("请假类型key") + private String typeKey; // 请假类型key + @ApiModelProperty("请假类型value") + private String typeValue; // 请假类型value + @ApiModelProperty("时长") + private String duration; // 时长 + @ApiModelProperty("天数") + private String days; // 天数 + @ApiModelProperty("开始时间") + private String startTime; // 开始时间 + @ApiModelProperty("结束时间") + private String endTime; // 结束时间 + @ApiModelProperty("分公司sid") + private String useOrgSid; // 分公司sid + @ApiModelProperty("分公司名称") + private String useOrgName; // 分公司名称 + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + @ApiModelProperty("办结日期") + private Date finishTime; + @ApiModelProperty("实例id") + private String procInstId; // 实例id + @ApiModelProperty("流程定义id") + private String procDefId; // 流程定义id + @ApiModelProperty("任务id") + private String taskId; // 任务id + @ApiModelProperty("环节id") + private String nodeId; // 环节id + @ApiModelProperty("流程状态") + private String nodeState; // 流程状态 + @ApiModelProperty("图片") + private List files = new ArrayList<>(); +} \ No newline at end of file diff --git a/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/oa/leaveapply/AppLeaveApplyFeign.java b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/oa/leaveapply/AppLeaveApplyFeign.java new file mode 100644 index 0000000000..21ffa76262 --- /dev/null +++ b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/oa/leaveapply/AppLeaveApplyFeign.java @@ -0,0 +1,73 @@ +package com.yxt.anrui.terminal.api.oa.leaveapply; + +import com.yxt.anrui.terminal.api.oa.leaveapply.flowable.*; +import com.yxt.common.core.result.ResultBean; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.cloud.openfeign.SpringQueryMap; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; + +/** + * @Author + * @Date + * @Description + */ +@Api(tags = "售后盘盈入库") +@FeignClient( + contextId = "terminal-AppLeaveApply", + name = "anrui-terminal", + path = "oa/v1/leave") +public interface AppLeaveApplyFeign { + + @ApiOperation("详情") + @GetMapping("/detail") + public ResultBean fetchDetailsBySid(@RequestParam("sid") String sid); + + @ApiOperation("初始化") + @GetMapping("/init") + public ResultBean init(@RequestParam(value = "sid",required = false) String sid, @RequestParam("userSid") String userSid, @RequestParam("orgPath") String orgPath); + + /**********************************************流程********************************************/ + + @ApiOperation("提交审批流程") + @PostMapping("/save") + public ResultBean submit(@RequestBody @Valid SubmitAppLeaveApplyDto dto); + + @ApiOperation("办理") + @PutMapping("/agree") + @ResponseBody + ResultBean agreeCreditInfo(@RequestBody AppFlowDto dto); + + @ApiOperation("驳回") + @PutMapping("/reject") + @ResponseBody + ResultBean rejectCreditInfo(@RequestBody AppFlowTaskQuery query); + + @ApiOperation("撤回") + @PutMapping("/recall") + @ResponseBody + ResultBean recallCreditInfo(@RequestBody AppFlowTaskQuery query); + + @ApiOperation("终止") + @PutMapping("/stop") + @ResponseBody + ResultBean stopCreditInfo(@RequestBody AppFlowTaskQuery query); + + @ApiOperation("获取流程操作标题") + @GetMapping("/getFlowOperateTitle") + @ResponseBody + ResultBean getFlowOperateTitle(@SpringQueryMap AppFlowQuery query); + + @ApiOperation(value = "加签") + @PutMapping(value = "/sign") + @ResponseBody + public ResultBean delegate(@RequestBody AppDelegateQuery delegateQuery); + + @ApiOperation(value = "转办") + @PutMapping(value = "/transfer") + @ResponseBody + public ResultBean assignTask(@RequestBody AppDelegateQuery delegateQuery); +} diff --git a/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/oa/leaveapply/AppLeaveApplyInitVo.java b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/oa/leaveapply/AppLeaveApplyInitVo.java new file mode 100644 index 0000000000..3a4babe41e --- /dev/null +++ b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/oa/leaveapply/AppLeaveApplyInitVo.java @@ -0,0 +1,91 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.terminal.api.oa.leaveapply; + + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * Project: yxt-oa(请假申请)
+ * File: OaLeaveApplyVo.java
+ * Class: com.yxt.anrui.oa.api.oaleaveapply.OaLeaveApplyVo
+ * Description: 请假申请 视图数据对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2024-11-28 15:24:37
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Data +@ApiModel(value = "请假申请 视图数据详情", description = "请假申请 视图数据详情") +public class AppLeaveApplyInitVo implements Vo { + + private String sid; + private String userSid; + private String orgPath; + + @ApiModelProperty("请假类型") + private List types; + @ApiModelProperty("请假类型key") + private String typeKey; + @ApiModelProperty("请假类型value") + private String typeValue; + @ApiModelProperty("开始时间") + private String startTime; + @ApiModelProperty("结束时间") + private String endTime; + @ApiModelProperty("时长") + private String duration; + @ApiModelProperty("天数") + private String days; + @ApiModelProperty("请假事由") + private String remarks; + @ApiModelProperty("图片") + private List files = new ArrayList<>(); + @ApiModelProperty("单据编号") + private String billNo; // 单据编号 + @ApiModelProperty("申请人") + private String createByName; // 申请人 + @ApiModelProperty("申请部门名称") + private String deptName; // 申请部门名称 + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + @ApiModelProperty("申请日期") + private Date createTime; + @ApiModelProperty("实例id") + private String procInsId; // 实例id + @ApiModelProperty("任务id") + private String taskId; // 任务id +} \ No newline at end of file diff --git a/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/oa/leaveapply/AppLeaveType.java b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/oa/leaveapply/AppLeaveType.java new file mode 100644 index 0000000000..500fb74e08 --- /dev/null +++ b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/oa/leaveapply/AppLeaveType.java @@ -0,0 +1,11 @@ +package com.yxt.anrui.terminal.api.oa.leaveapply; + +import lombok.Data; + +@Data +public class AppLeaveType { + + private String dictKey; //数据字典key + private String dictValue; //数据字典value + private String extra; //额外追加字符串 +} diff --git a/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/oa/leaveapply/flowable/AppDelegateQuery.java b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/oa/leaveapply/flowable/AppDelegateQuery.java new file mode 100644 index 0000000000..6dbe0e66a9 --- /dev/null +++ b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/oa/leaveapply/flowable/AppDelegateQuery.java @@ -0,0 +1,25 @@ +package com.yxt.anrui.terminal.api.oa.leaveapply.flowable; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author Administrator + * @description + * @date 2023/9/28 10:16 + */ +@Data +public class AppDelegateQuery { + @ApiModelProperty + private String userSid; + @ApiModelProperty("流程实例id") + @JsonProperty("procInsId") + private String instanceId; + @ApiModelProperty("任务Id") + private String taskId; + @ApiModelProperty("审批人sid") + private String assignee; + @ApiModelProperty("填写意见") + private String views; +} diff --git a/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/oa/leaveapply/flowable/AppFlowDto.java b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/oa/leaveapply/flowable/AppFlowDto.java new file mode 100644 index 0000000000..e201505170 --- /dev/null +++ b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/oa/leaveapply/flowable/AppFlowDto.java @@ -0,0 +1,37 @@ +package com.yxt.anrui.terminal.api.oa.leaveapply.flowable; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.yxt.common.core.dto.Dto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @Author dimengzhe + * @Date 2022/8/9 14:09 + * @Description + */ +@Data +public class AppFlowDto implements Dto { + private static final long serialVersionUID = 3626473483180150495L; + + @ApiModelProperty(value = "任务id") + @NotBlank(message = "参数错误:taskId") + private String taskId; + @ApiModelProperty(value = "流程id") + @NotBlank(message = "参数错误:procInsId") + @JsonProperty("procInsId") + private String instanceId; + @ApiModelProperty(value = "意见") + private String comment; + @ApiModelProperty(value = "业务sid") + @NotBlank(message = "参数错误:businessSid") + private String businessSid; + @ApiModelProperty(value = "用户sid") + @NotBlank(message = "参数错误:userSid") + private String userSid; + @ApiModelProperty(value = "节点id") + @NotBlank(message = "参数错误:taskDefKey") + private String taskDefKey; +} diff --git a/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/oa/leaveapply/flowable/AppFlowQuery.java b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/oa/leaveapply/flowable/AppFlowQuery.java new file mode 100644 index 0000000000..6338918e02 --- /dev/null +++ b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/oa/leaveapply/flowable/AppFlowQuery.java @@ -0,0 +1,28 @@ +package com.yxt.anrui.terminal.api.oa.leaveapply.flowable; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Author dimengzhe + * @Date 2022/8/9 14:15 + * @Description + */ +@Data +public class AppFlowQuery implements Query { + private static final long serialVersionUID = 5514095179438249641L; + + @ApiModelProperty(value = "节点key") + private String taskDefKey; + @ApiModelProperty(value = "业务sid") + private String businessSid; + @ApiModelProperty(value = "0 上一环节 1下一环节") + @NotNull(message = "参数错误:next") + private Integer next; + + @ApiModelProperty("组织机构全路径") + private String orgPath; +} diff --git a/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/oa/leaveapply/flowable/AppFlowTaskQuery.java b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/oa/leaveapply/flowable/AppFlowTaskQuery.java new file mode 100644 index 0000000000..f12a41c0d4 --- /dev/null +++ b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/oa/leaveapply/flowable/AppFlowTaskQuery.java @@ -0,0 +1,47 @@ +package com.yxt.anrui.terminal.api.oa.leaveapply.flowable; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @Author dimengzhe + * @Date 2022/8/9 14:11 + * @Description + */ +@Data +public class AppFlowTaskQuery implements Query { + private static final long serialVersionUID = -7082170710942810289L; + + /** + * 终止、驳回、撤回 + */ + @ApiModelProperty("任务Id") + @NotBlank(message = "参数错误:taskId") + private String taskId; + /** + * 终止、驳回、撤回 + */ + @ApiModelProperty("业务sid") + @NotBlank(message = "参数错误:businessSid") + private String businessSid; + /** + * 终止、驳回 + */ + @ApiModelProperty("任务意见") + private String comment; + /** + * 终止、撤回、驳回 + */ + @ApiModelProperty("用户Sid") + private String userSid; + /** + * 终止 + */ + @ApiModelProperty("流程实例Id") + @JsonProperty("procInsId") + private String instanceId; +} diff --git a/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/oa/leaveapply/flowable/SubmitAppLeaveApplyDto.java b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/oa/leaveapply/flowable/SubmitAppLeaveApplyDto.java new file mode 100644 index 0000000000..e7bc2b419d --- /dev/null +++ b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/oa/leaveapply/flowable/SubmitAppLeaveApplyDto.java @@ -0,0 +1,24 @@ +package com.yxt.anrui.terminal.api.oa.leaveapply.flowable; + +import com.yxt.anrui.terminal.api.oa.leaveapply.AppLeaveApplyDto; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author liuguohui + * @version 1.0 + * @description + * @date 2022/04/13 + */ +@ApiModel("提交") +@Data +public class SubmitAppLeaveApplyDto extends AppLeaveApplyDto { + + @ApiModelProperty("意见") + private String comment; + @ApiModelProperty("流程实例id") + private String instanceId; + @ApiModelProperty("任务id") + private String taskId; +} diff --git a/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/supplychain/specialrebatecheckapply/AppSpecialRebateDetailsVo.java b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/supplychain/specialrebatecheckapply/AppSpecialRebateDetailsVo.java index 9398a8a662..95d7824b5c 100644 --- a/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/supplychain/specialrebatecheckapply/AppSpecialRebateDetailsVo.java +++ b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/supplychain/specialrebatecheckapply/AppSpecialRebateDetailsVo.java @@ -52,6 +52,9 @@ import java.util.Date; @ApiModel(value = "专项返利预提表 视图数据详情", description = "专项返利预提表 视图数据详情") public class AppSpecialRebateDetailsVo implements Vo { + private String sid; + @ApiModelProperty("状态") + private String state; @ApiModelProperty("创建组织名称") private String createOrgName; @ApiModelProperty("采购系统名称") @@ -67,18 +70,32 @@ public class AppSpecialRebateDetailsVo implements Vo { private String rebateName; @ApiModelProperty("预计返利") private String estimateRebate; + @ApiModelProperty("预提日期") + private String withholdingDate; @ApiModelProperty("其中预提费用") private BigDecimal withholdCost; - @ApiModelProperty("预计待支付费用") + @ApiModelProperty("其中待支付费用") private BigDecimal expectTreatCost; - @ApiModelProperty("预计支出费用") + @ApiModelProperty("其中支出费用") private BigDecimal expectItureCost; + @ApiModelProperty("其中抵顶费用") + private BigDecimal expectSuppCost; + @ApiModelProperty("抵顶费用说明") + private String expectSuppRemark; @ApiModelProperty("上传日期") private String uploadDate; @ApiModelProperty("上传金额") private String uploadMoney; @ApiModelProperty("待确定金额(动态)") private String stayDetermineMoney; + @ApiModelProperty("一次支出费用") + private BigDecimal onceItureCost; + @ApiModelProperty("一次待支付费用") + private BigDecimal onceTreatCost; + @ApiModelProperty("一次抵顶费用") + private BigDecimal onceSuppCost; + @ApiModelProperty("一次抵顶费用说明") + private String onceSuppRemark; @ApiModelProperty("费用") private String money; @ApiModelProperty("差异金额") @@ -87,6 +104,30 @@ public class AppSpecialRebateDetailsVo implements Vo { private String isAdjustment; // 是否调整 @ApiModelProperty("调整金额") private String adjustmentMoney; // 调整金额 + @ApiModelProperty("支出费用调整金额") + private BigDecimal itureAdjustmentMoney; + @ApiModelProperty("待支付费用调整金额") + private BigDecimal treatAdjustmentMoney; + @ApiModelProperty("抵顶费用调整金额") + private BigDecimal suppAdjustmentMoney; @ApiModelProperty("调整说明") private String adjustmentRemarks; + @ApiModelProperty("所属年月") + private String palceGenDate; + @ApiModelProperty("备注") + private String remarks; + @ApiModelProperty("二次上传日期") + private String secondaryUploadDate; + @ApiModelProperty("二次上传金额") + private String secondaryUploadMoney; + @ApiModelProperty("二次支出费用") + private BigDecimal secondItureCost; + @ApiModelProperty("二次待支付费用") + private BigDecimal secondTreatCost; + @ApiModelProperty("二次抵顶费用") + private BigDecimal secondSuppCost; + @ApiModelProperty("二次抵顶费用说明") + private String secondSuppRemark; + + private String specialRebateSid; } \ No newline at end of file diff --git a/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/supplychain/specialrebatecheckapply/AppSpecialrebateCheckapplyFeign.java b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/supplychain/specialrebatecheckapply/AppSpecialrebateCheckapplyFeign.java index e7a56f4096..dd22f2dcfa 100644 --- a/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/supplychain/specialrebatecheckapply/AppSpecialrebateCheckapplyFeign.java +++ b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/supplychain/specialrebatecheckapply/AppSpecialrebateCheckapplyFeign.java @@ -34,6 +34,10 @@ public interface AppSpecialrebateCheckapplyFeign { @GetMapping("/specialRebateCheckDetails/{sid}") public ResultBean> specialRebateCheckDetails(@PathVariable("sid") String sid); + @ApiOperation("明细-详情") + @GetMapping("/scmspecialrebateDetail/{sid}") + public ResultBean scmspecialrebateDetail(@PathVariable("sid") String sid); + /**********************************************流程********************************************/ @ApiOperation("办理") diff --git a/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/TerminalApplication.java b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/TerminalApplication.java index c0642ee585..591cf874b1 100644 --- a/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/TerminalApplication.java +++ b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/TerminalApplication.java @@ -15,7 +15,7 @@ import org.springframework.cloud.openfeign.EnableFeignClients; "com.yxt.anrui.terminal", "com.yxt.common.base.config" },exclude = {DataSourceAutoConfiguration.class}) -@EnableFeignClients(basePackages = {"com.yxt.anrui.portal", "com.yxt.anrui.crm", "com.yxt.anrui.base", "com.yxt.anrui.riskcenter","com.yxt.anrui.flowable","com.yxt.anrui.buscenter","com.yxt.anrui.scm","com.yxt.anrui.fin", "com.yxt.anrui.terminal.fegin.wmsinventorycheckbill","com.yxt.anrui.terminal.fegin.wmsinventoryprofitin","com.yxt.anrui.terminal.fegin.wmsinventoryprofitout","com.yxt.anrui.terminal.fegin.basegoodssku","com.yxt.anrui.terminal.fegin.basesupplierinfo","com.yxt.anrui.terminal.fegin.wmsInventory","com.yxt.anrui.terminal.fegin.asbusrepairbill","com.yxt.anrui.terminal.fegin.pmspurchasebill","com.yxt.anrui.terminal.fegin.pmspurchasebackbill","com.yxt.anrui.terminal.fegin.smspricestrategybill","com.yxt.anrui.terminal.fegin.astechtitleapply","com.yxt.anrui.terminal.fegin.asserviceaccommapply","com.yxt.anrui.terminal.fegin.asbusclaiminvoicebill","com.yxt.anrui.terminal.fegin.wmsinventoryallocatebill","com.yxt.anrui.terminal.fegin.asoldpartreturnapply","com.yxt.anrui.terminal.fegin.asoldparthandleapply","com.yxt.anrui.terminal.fegin.asbwdiffapply","com.yxt.anrui.terminal.fegin.asbwinvoiceapply","com.yxt.anrui.terminal.fegin.ashosesuppapply","com.yxt.anrui.terminal.fegin.asbusclaimcheckapply","com.yxt.anrui.terminal.fegin.asoldparts","com.yxt.anrui.terminal.fegin.wmsoldregister","com.yxt.anrui.terminal.fegin.asbusrepairinventorybill","com.yxt.anrui.terminal.fegin.wmsoldinventory","com.yxt.anrui.terminal.fegin.wmswarehouserack","com.yxt.anrui.terminal.fegin.asbusrepairinventorybilldetail","com.yxt.anrui.terminal.fegin.wmsinventoryrecord","com.yxt.anrui.terminal.fegin.asstandrecordapply","com.yxt.anrui.terminal.fegin.wmsotheroutapply"}) +@EnableFeignClients(basePackages = {"com.yxt.anrui.portal", "com.yxt.anrui.crm", "com.yxt.anrui.base", "com.yxt.anrui.riskcenter","com.yxt.anrui.flowable","com.yxt.anrui.buscenter","com.yxt.anrui.scm","com.yxt.anrui.fin", "com.yxt.anrui.terminal.fegin.wmsinventorycheckbill","com.yxt.anrui.terminal.fegin.wmsinventoryprofitin","com.yxt.anrui.terminal.fegin.wmsinventoryprofitout","com.yxt.anrui.terminal.fegin.basegoodssku","com.yxt.anrui.terminal.fegin.basesupplierinfo","com.yxt.anrui.terminal.fegin.wmsInventory","com.yxt.anrui.terminal.fegin.asbusrepairbill","com.yxt.anrui.terminal.fegin.pmspurchasebill","com.yxt.anrui.terminal.fegin.pmspurchasebackbill","com.yxt.anrui.terminal.fegin.smspricestrategybill","com.yxt.anrui.terminal.fegin.astechtitleapply","com.yxt.anrui.terminal.fegin.asserviceaccommapply","com.yxt.anrui.terminal.fegin.asbusclaiminvoicebill","com.yxt.anrui.terminal.fegin.wmsinventoryallocatebill","com.yxt.anrui.terminal.fegin.asoldpartreturnapply","com.yxt.anrui.terminal.fegin.asoldparthandleapply","com.yxt.anrui.terminal.fegin.asbwdiffapply","com.yxt.anrui.terminal.fegin.asbwinvoiceapply","com.yxt.anrui.terminal.fegin.ashosesuppapply","com.yxt.anrui.terminal.fegin.asbusclaimcheckapply","com.yxt.anrui.terminal.fegin.asoldparts","com.yxt.anrui.terminal.fegin.wmsoldregister","com.yxt.anrui.terminal.fegin.asbusrepairinventorybill","com.yxt.anrui.terminal.fegin.wmsoldinventory","com.yxt.anrui.terminal.fegin.wmswarehouserack","com.yxt.anrui.terminal.fegin.asbusrepairinventorybilldetail","com.yxt.anrui.terminal.fegin.wmsinventoryrecord","com.yxt.anrui.terminal.fegin.asstandrecordapply","com.yxt.anrui.terminal.fegin.wmsotheroutapply","com.yxt.anrui.terminal.fegin.oaleaveapply"}) public class TerminalApplication { public static void main(String[] args) { diff --git a/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/oa/leaveapply/AppLeaveApplyRest.java b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/oa/leaveapply/AppLeaveApplyRest.java new file mode 100644 index 0000000000..b0a008b97a --- /dev/null +++ b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/oa/leaveapply/AppLeaveApplyRest.java @@ -0,0 +1,93 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.terminal.biz.oa.leaveapply; + +import com.yxt.anrui.terminal.api.oa.leaveapply.AppLeaveApplyDetailsVo; +import com.yxt.anrui.terminal.api.oa.leaveapply.AppLeaveApplyFeign; +import com.yxt.anrui.terminal.api.oa.leaveapply.AppLeaveApplyInitVo; +import com.yxt.anrui.terminal.api.oa.leaveapply.flowable.*; +import com.yxt.common.core.result.ResultBean; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("oa/v1/leave") +public class AppLeaveApplyRest implements AppLeaveApplyFeign { + + @Autowired + private AppLeaveApplyService appLeaveApplyService; + + @Override + public ResultBean fetchDetailsBySid(String sid) { + return appLeaveApplyService.fetchDetailsBySid(sid); + } + + @Override + public ResultBean init(String sid, String userSid, String orgPath) { + return appLeaveApplyService.init(sid,userSid,orgPath); + } + + @Override + public ResultBean submit(SubmitAppLeaveApplyDto dto) { + return appLeaveApplyService.submit(dto); + } + + @Override + public ResultBean agreeCreditInfo(AppFlowDto dto) { + return appLeaveApplyService.agreeCreditInfo(dto); + } + + @Override + public ResultBean rejectCreditInfo(AppFlowTaskQuery query) { + return appLeaveApplyService.rejectCreditInfo(query); + } + + @Override + public ResultBean recallCreditInfo(AppFlowTaskQuery query) { + return appLeaveApplyService.recallCreditInfo(query); + } + + @Override + public ResultBean stopCreditInfo(AppFlowTaskQuery query) { + return appLeaveApplyService.stopCreditInfo(query); + } + + @Override + public ResultBean getFlowOperateTitle(AppFlowQuery query) { + return appLeaveApplyService.getFlowOperateTitle(query); + } + + @Override + public ResultBean delegate(AppDelegateQuery delegateQuery) { + return appLeaveApplyService.delegate(delegateQuery); + } + + @Override + public ResultBean assignTask(AppDelegateQuery delegateQuery) { + return appLeaveApplyService.assignTask(delegateQuery); + } +} diff --git a/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/oa/leaveapply/AppLeaveApplyService.java b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/oa/leaveapply/AppLeaveApplyService.java new file mode 100644 index 0000000000..67075bf987 --- /dev/null +++ b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/oa/leaveapply/AppLeaveApplyService.java @@ -0,0 +1,187 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.terminal.biz.oa.leaveapply; + +import cn.hutool.core.bean.BeanUtil; +import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrg; +import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign; +import com.yxt.anrui.portal.api.sysuser.SysUserFeign; +import com.yxt.anrui.portal.api.sysuser.SysUserVo; +import com.yxt.anrui.terminal.api.oa.leaveapply.AppLeaveApplyDetailsVo; +import com.yxt.anrui.terminal.api.oa.leaveapply.AppLeaveApplyInitVo; +import com.yxt.anrui.terminal.api.oa.leaveapply.flowable.*; +import com.yxt.anrui.terminal.fegin.oaleaveapply.OaLeaveApplyDetailsVo; +import com.yxt.anrui.terminal.fegin.oaleaveapply.OaLeaveApplyFeign; +import com.yxt.anrui.terminal.fegin.oaleaveapply.OaLeaveApplyInitVo; +import com.yxt.anrui.terminal.fegin.oaleaveapply.flowable.*; +import com.yxt.common.core.result.ResultBean; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +@Service +public class AppLeaveApplyService { + + @Resource + private OaLeaveApplyFeign oaLeaveApplyFeign; + @Autowired + private SysUserFeign sysUserFeign; + @Autowired + private SysStaffOrgFeign sysStaffOrgFeign; + + public ResultBean fetchDetailsBySid(String sid) { + ResultBean rb = ResultBean.fireFail(); + OaLeaveApplyDetailsVo data = oaLeaveApplyFeign.fetchDetailsBySid(sid).getData(); + AppLeaveApplyDetailsVo appLeaveApplyDetailsVo = new AppLeaveApplyDetailsVo(); + appLeaveApplyDetailsVo.setProcInsId(data.getProcInstId()); + BeanUtil.copyProperties(data,appLeaveApplyDetailsVo); + return rb.success().setData(appLeaveApplyDetailsVo); + } + + public ResultBean init(String sid, String userSid, String orgPath) { + ResultBean rb = ResultBean.fireFail(); + OaLeaveApplyInitVo data = oaLeaveApplyFeign.init(sid, userSid, orgPath).getData(); + AppLeaveApplyInitVo appLeaveApplyInitVo = new AppLeaveApplyInitVo(); + BeanUtil.copyProperties(data,appLeaveApplyInitVo); + return rb.success().setData(appLeaveApplyInitVo); + } + + public ResultBean submit(SubmitAppLeaveApplyDto dto) { + ResultBean rb = ResultBean.fireFail(); + SubmitOaLeaveApplyDto submitOaLeaveApplyDto = new SubmitOaLeaveApplyDto(); + BeanUtil.copyProperties(dto,submitOaLeaveApplyDto); + oaLeaveApplyFeign.submit(submitOaLeaveApplyDto); + return rb.success(); + } + + public ResultBean agreeCreditInfo(AppFlowDto dto) { + ResultBean rb = ResultBean.fireFail(); + //根据用户sid获取staffSid + ResultBean userVoResultBean = sysUserFeign.fetchBySid(dto.getUserSid()); + if (!userVoResultBean.getSuccess()) { + return rb.setMsg(userVoResultBean.getMsg()); + } + //根据staffSid获取用户的组织全路径 + ResultBean staffOrgResultBean = sysStaffOrgFeign.getOrgByStaffSid(userVoResultBean.getData().getStaffSid()); + if (!staffOrgResultBean.getSuccess()) { + return rb.setMsg(staffOrgResultBean.getMsg()); + } + //用户的组织全路径 + String orgSidPath = staffOrgResultBean.getData().getOrgSidPath(); + OaLeaveApplyCompleteDto oaLeaveApplyCompleteDto = new OaLeaveApplyCompleteDto(); + BeanUtil.copyProperties(dto, oaLeaveApplyCompleteDto); + oaLeaveApplyCompleteDto.setOrgPath(orgSidPath); + ResultBean resultBean = oaLeaveApplyFeign.complete(oaLeaveApplyCompleteDto); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + return rb.success().setData(resultBean.getData()); + } + + public ResultBean rejectCreditInfo(AppFlowTaskQuery query) { + ResultBean rb = ResultBean.fireFail(); + OaLeaveApplyTaskQuery oaLeaveApplyTaskQuery = new OaLeaveApplyTaskQuery(); + BeanUtil.copyProperties(query, oaLeaveApplyTaskQuery); + ResultBean resultBean = oaLeaveApplyFeign.reject(oaLeaveApplyTaskQuery); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + return rb.success().setData(resultBean.getData()); + } + + public ResultBean recallCreditInfo(AppFlowTaskQuery query) { + ResultBean rb = ResultBean.fireFail(); + OaLeaveApplyTaskQuery oaLeaveApplyTaskQuery = new OaLeaveApplyTaskQuery(); + BeanUtil.copyProperties(query, oaLeaveApplyTaskQuery); + ResultBean resultBean = oaLeaveApplyFeign.revokeProcess(oaLeaveApplyTaskQuery); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + return rb.success().setData(resultBean.getData()); + } + + public ResultBean stopCreditInfo(AppFlowTaskQuery query) { + ResultBean rb = ResultBean.fireFail(); + OaLeaveApplyTaskQuery oaLeaveApplyTaskQuery = new OaLeaveApplyTaskQuery(); + BeanUtil.copyProperties(query, oaLeaveApplyTaskQuery); + ResultBean resultBean = oaLeaveApplyFeign.breakProcess(oaLeaveApplyTaskQuery); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + return rb.success().setData(resultBean.getData()); + } + + public ResultBean getFlowOperateTitle(AppFlowQuery query) { + ResultBean rb = ResultBean.fireFail(); + //0 上一环节 1下一环节 + int next = query.getNext(); + OaLeaveApplyNodeQuery getNodeQuery = new OaLeaveApplyNodeQuery(); + BeanUtil.copyProperties(query, getNodeQuery); + String data = ""; + if (next == 0) { + ResultBean> getPreviousNodesForReject = oaLeaveApplyFeign.getPreviousNodesForReject(getNodeQuery); + if (getPreviousNodesForReject.getSuccess()) { + getPreviousNodesForReject.getData().removeAll(Collections.singleton(null)); + data = getPreviousNodesForReject.getData().get(0).getName(); + } else { + return rb.setMsg(getPreviousNodesForReject.getMsg()); + } + } else if (next == 1) { + ResultBean> getNextNodesForSubmit = oaLeaveApplyFeign.getNextNodesForSubmit(getNodeQuery); + if (getNextNodesForSubmit.getSuccess()) { + getNextNodesForSubmit.getData().removeAll(Collections.singleton(null)); + data = getNextNodesForSubmit.getData().get(0).getName(); + } else { + return rb.setMsg(getNextNodesForSubmit.getMsg()); + } + } else { + return rb.setMsg("参数错误:next"); + } + return rb.success().setData(data); + } + + public ResultBean delegate(AppDelegateQuery delegateQuery) { + ResultBean rb = ResultBean.fireFail(); + OaLeaveApplyDelegateQuery delegateQuery1 = new + OaLeaveApplyDelegateQuery(); + BeanUtil.copyProperties(delegateQuery, delegateQuery1); + oaLeaveApplyFeign.delegate(delegateQuery1); + return rb.success(); + } + + public ResultBean assignTask(AppDelegateQuery delegateQuery) { + ResultBean rb = ResultBean.fireFail(); + OaLeaveApplyDelegateQuery delegateQuery1 = new + OaLeaveApplyDelegateQuery(); + BeanUtil.copyProperties(delegateQuery, delegateQuery1); + oaLeaveApplyFeign.assignTask(delegateQuery1); + return rb.success(); + } +} diff --git a/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/supplychain/specialrebatecheckapply/AppSpecialrebateCheckapplyRest.java b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/supplychain/specialrebatecheckapply/AppSpecialrebateCheckapplyRest.java index a8cd33fb1a..21f938e33c 100644 --- a/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/supplychain/specialrebatecheckapply/AppSpecialrebateCheckapplyRest.java +++ b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/supplychain/specialrebatecheckapply/AppSpecialrebateCheckapplyRest.java @@ -56,6 +56,11 @@ public class AppSpecialrebateCheckapplyRest implements AppSpecialrebateCheckappl return appSpecialrebateCheckapplyService.specialRebateCheckDetails(sid); } + @Override + public ResultBean scmspecialrebateDetail(String sid) { + return appSpecialrebateCheckapplyService.scmspecialrebateDetail(sid); + } + @Override public ResultBean agreeCreditInfo(AppFlowDto dto) { return appSpecialrebateCheckapplyService.agreeCreditInfo(dto); diff --git a/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/supplychain/specialrebatecheckapply/AppSpecialrebateCheckapplyService.java b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/supplychain/specialrebatecheckapply/AppSpecialrebateCheckapplyService.java index 7bba103ba7..daea6da054 100644 --- a/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/supplychain/specialrebatecheckapply/AppSpecialrebateCheckapplyService.java +++ b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/supplychain/specialrebatecheckapply/AppSpecialrebateCheckapplyService.java @@ -32,6 +32,7 @@ import com.yxt.anrui.portal.api.sysuser.SysUserFeign; import com.yxt.anrui.portal.api.sysuser.SysUserVo; import com.yxt.anrui.scm.api.flow.FlowTaskVo; import com.yxt.anrui.scm.api.scmspecialrebate.ScmSpecialRebateDetailsVo; +import com.yxt.anrui.scm.api.scmspecialrebate.ScmSpecialRebateFeign; import com.yxt.anrui.scm.api.scmspecialrebatecheckapply.ScmSpecialrebateCheckapplyDetailsVo; import com.yxt.anrui.scm.api.scmspecialrebatecheckapply.ScmSpecialrebateCheckapplyFeign; import com.yxt.anrui.scm.api.scmspecialrebatecheckapply.flow.ScmSpecialRebateCheckApplyCompleteDto; @@ -63,9 +64,11 @@ public class AppSpecialrebateCheckapplyService { @Resource private ScmSpecialrebateCheckapplydetailFeign scmSpecialrebateCheckapplydetailFeign; @Autowired - private SysStaffOrgFeign sysStaffOrgFeign; + private ScmSpecialRebateFeign scmSpecialRebateFeign; @Autowired private SysUserFeign sysUserFeign; + @Autowired + private SysStaffOrgFeign sysStaffOrgFeign; public ResultBean fetchDetailsBySid(String sid) { ResultBean rb = ResultBean.fireFail(); @@ -91,11 +94,20 @@ public class AppSpecialrebateCheckapplyService { for (ScmSpecialRebateDetailsVo datum : data) { AppSpecialRebateDetailsVo appSpecialRebateDetailsVo = new AppSpecialRebateDetailsVo(); BeanUtil.copyProperties(datum,appSpecialRebateDetailsVo); + appSpecialRebateDetailsVo.setSid(appSpecialRebateDetailsVo.getSpecialRebateSid()); appSpecialRebateDetailsVos.add(appSpecialRebateDetailsVo); } return rb.success().setData(appSpecialRebateDetailsVos); } + public ResultBean scmspecialrebateDetail(String sid) { + ResultBean rb = ResultBean.fireFail(); + AppSpecialRebateDetailsVo appSpecialRebateDetailsVo = new AppSpecialRebateDetailsVo(); + ScmSpecialRebateDetailsVo data = scmSpecialRebateFeign.fetchDetailsBySid(sid).getData(); + BeanUtil.copyProperties(data,appSpecialRebateDetailsVo); + return rb.success().setData(appSpecialRebateDetailsVo); + } + public ResultBean agreeCreditInfo(AppFlowDto dto) { ResultBean rb = ResultBean.fireFail(); //根据用户sid获取staffSid diff --git a/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/oaleaveapply/OaLeaveApplyDetailsVo.java b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/oaleaveapply/OaLeaveApplyDetailsVo.java new file mode 100644 index 0000000000..ec7140c8fe --- /dev/null +++ b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/oaleaveapply/OaLeaveApplyDetailsVo.java @@ -0,0 +1,97 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.terminal.fegin.oaleaveapply; + + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * Project: yxt-oa(请假申请)
+ * File: OaLeaveApplyVo.java
+ * Class: com.yxt.anrui.oa.api.oaleaveapply.OaLeaveApplyVo
+ * Description: 请假申请 视图数据对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2024-11-28 15:24:37
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Data +@ApiModel(value = "请假申请 视图数据详情", description = "请假申请 视图数据详情") +public class OaLeaveApplyDetailsVo implements Vo { + + private String sid; // sid + + @ApiModelProperty("单据编号") + private String billNo; // 单据编号 + @ApiModelProperty("申请人") + private String createByName; // 申请人 + @ApiModelProperty("申请部门sid") + private String deptSid; // 申请部门sid + @ApiModelProperty("申请部门名称") + private String deptName; // 申请部门名称 + @ApiModelProperty("请假类型key") + private String typeKey; // 请假类型key + @ApiModelProperty("请假类型value") + private String typeValue; // 请假类型value + @ApiModelProperty("时长") + private String duration; // 时长 + @ApiModelProperty("天数") + private String days; // 天数 + @ApiModelProperty("开始时间") + private String startTime; // 开始时间 + @ApiModelProperty("结束时间") + private String endTime; // 结束时间 + @ApiModelProperty("分公司sid") + private String useOrgSid; // 分公司sid + @ApiModelProperty("分公司名称") + private String useOrgName; // 分公司名称 + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + @ApiModelProperty("办结日期") + private Date finishTime; + @ApiModelProperty("实例id") + private String procInstId; // 实例id + @ApiModelProperty("流程定义id") + private String procDefId; // 流程定义id + @ApiModelProperty("任务id") + private String taskId; // 任务id + @ApiModelProperty("环节id") + private String nodeId; // 环节id + @ApiModelProperty("流程状态") + private String nodeState; // 流程状态 + @ApiModelProperty("图片") + private List files = new ArrayList<>(); +} \ No newline at end of file diff --git a/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/oaleaveapply/OaLeaveApplyDto.java b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/oaleaveapply/OaLeaveApplyDto.java new file mode 100644 index 0000000000..628fe42a08 --- /dev/null +++ b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/oaleaveapply/OaLeaveApplyDto.java @@ -0,0 +1,101 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.terminal.fegin.oaleaveapply; + + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.yxt.common.core.dto.Dto; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * Project: yxt-oa(请假申请)
+ * File: OaLeaveApplyDto.java
+ * Class: com.yxt.anrui.oa.api.oaleaveapply.OaLeaveApplyDto
+ * Description: 请假申请 数据传输对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2024-11-28 15:24:37
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Data +@ApiModel(value = "请假申请 数据传输对象", description = "请假申请 数据传输对象") +public class OaLeaveApplyDto implements Dto { + + private String sid; + private String userSid; + private String orgPath; + + @ApiModelProperty("请假类型") + private List types; + @ApiModelProperty("单据编号") + private String billNo; // 单据编号 + @ApiModelProperty("申请人") + private String createByName; // 申请人 + @ApiModelProperty("申请部门sid") + private String deptSid; // 申请部门sid + @ApiModelProperty("申请部门名称") + private String deptName; // 申请部门名称 + @ApiModelProperty("请假类型key") + private String typeKey; // 请假类型key + @ApiModelProperty("请假类型value") + private String typeValue; // 请假类型value + @ApiModelProperty("时长") + private String duration; // 时长 + @ApiModelProperty("天数") + private String days; // 天数 + @ApiModelProperty("开始时间") + private String startTime; // 开始时间 + @ApiModelProperty("结束时间") + private String endTime; // 结束时间 + @ApiModelProperty("分公司sid") + private String useOrgSid; // 分公司sid + @ApiModelProperty("分公司名称") + private String useOrgName; // 分公司名称 + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + @ApiModelProperty("办结日期") + private Date finishTime; + @ApiModelProperty("实例id") + private String procInstId; // 实例id + @ApiModelProperty("流程定义id") + private String procDefId; // 流程定义id + @ApiModelProperty("任务id") + private String taskId; // 任务id + @ApiModelProperty("环节id") + private String nodeId; // 环节id + @ApiModelProperty("流程状态") + private String nodeState; // 流程状态 + @ApiModelProperty("图片") + private List files = new ArrayList<>(); +} \ No newline at end of file diff --git a/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/oaleaveapply/OaLeaveApplyFeign.java b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/oaleaveapply/OaLeaveApplyFeign.java new file mode 100644 index 0000000000..4e70541815 --- /dev/null +++ b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/oaleaveapply/OaLeaveApplyFeign.java @@ -0,0 +1,72 @@ +package com.yxt.anrui.terminal.fegin.oaleaveapply; + +import cn.hutool.core.bean.BeanUtil; +import com.yxt.anrui.terminal.fegin.oaleaveapply.flowable.*; +import com.yxt.anrui.terminal.fegin.pmspurchasebackbill.PmsPurchasebackBillDetailsVo; +import com.yxt.anrui.terminal.fegin.pmspurchasebackbill.flowable.*; +import com.yxt.common.core.result.ResultBean; +import io.swagger.annotations.ApiOperation; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.cloud.openfeign.SpringQueryMap; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; + +/** + * @description: 商品基础信息 + * @author: fzz + * @date: 2024/3/7 + **/ +@FeignClient( + contextId = "yxt-oa-OaLeaveApply", + name = "yxt-oa", + path = "v1/oaleaveapply" +) +public interface OaLeaveApplyFeign { + + @ApiOperation("根据SID获取一条记录") + @GetMapping("/fetchDetailsBySid/{sid}") + public ResultBean fetchDetailsBySid(@PathVariable("sid") String sid); + + @ApiOperation("初始化") + @GetMapping("/init") + public ResultBean init(@RequestParam(value = "sid",required = false) String sid, @RequestParam("userSid") String userSid, @RequestParam("orgPath") String orgPath); + + @ApiOperation("提交审批流程") + @PostMapping("/submit") + public ResultBean submit(@RequestBody @Valid SubmitOaLeaveApplyDto dto); + + @ApiOperation(value = "办理(同意)") + @PostMapping("/complete") + public ResultBean complete(@Valid @RequestBody OaLeaveApplyCompleteDto query); + + @ApiOperation(value = "获取上一个环节") + @GetMapping(value = "/getPreviousNodesForReject") + public ResultBean> getPreviousNodesForReject(@Valid @SpringQueryMap OaLeaveApplyNodeQuery query); + + @ApiOperation(value = "获取下一个环节") + @GetMapping(value = "/getNextNodesForSubmit") + public ResultBean> getNextNodesForSubmit(@Valid @SpringQueryMap OaLeaveApplyNodeQuery query); + + @ApiOperation(value = "驳回任务") + @PostMapping(value = "/reject") + public ResultBean reject(@Valid @RequestBody OaLeaveApplyTaskQuery query); + + @ApiOperation(value = "撤回流程") + @PostMapping(value = "/revokeProcess") + public ResultBean revokeProcess(@Valid @RequestBody OaLeaveApplyTaskQuery query); + + @ApiOperation(value = "终止任务") + @PostMapping(value = "/breakProcess") + public ResultBean breakProcess(@Valid @RequestBody OaLeaveApplyTaskQuery query); + + @ApiOperation(value = "加签") + @PostMapping(value = "/delegate") + public ResultBean delegate(@RequestBody OaLeaveApplyDelegateQuery query); + + @ApiOperation(value = "转办") + @PutMapping(value = "/assignTask") + @ResponseBody + public ResultBean assignTask(@RequestBody OaLeaveApplyDelegateQuery query); +} diff --git a/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/oaleaveapply/OaLeaveApplyInitVo.java b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/oaleaveapply/OaLeaveApplyInitVo.java new file mode 100644 index 0000000000..55a538a559 --- /dev/null +++ b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/oaleaveapply/OaLeaveApplyInitVo.java @@ -0,0 +1,101 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.terminal.fegin.oaleaveapply; + + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * Project: yxt-oa(请假申请)
+ * File: OaLeaveApplyVo.java
+ * Class: com.yxt.anrui.oa.api.oaleaveapply.OaLeaveApplyVo
+ * Description: 请假申请 视图数据对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2024-11-28 15:24:37
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Data +@ApiModel(value = "请假申请 视图数据详情", description = "请假申请 视图数据详情") +public class OaLeaveApplyInitVo implements Vo { + + private String sid; + private String userSid; + private String orgPath; + + @ApiModelProperty("请假类型") + private List types; + @ApiModelProperty("单据编号") + private String billNo; // 单据编号 + @ApiModelProperty("申请人") + private String createByName; // 申请人 + @ApiModelProperty("申请部门sid") + private String deptSid; // 申请部门sid + @ApiModelProperty("申请部门名称") + private String deptName; // 申请部门名称 + @ApiModelProperty("请假类型key") + private String typeKey; // 请假类型key + @ApiModelProperty("请假类型value") + private String typeValue; // 请假类型value + @ApiModelProperty("时长") + private String duration; // 时长 + @ApiModelProperty("天数") + private String days; // 天数 + @ApiModelProperty("开始时间") + private String startTime; // 开始时间 + @ApiModelProperty("结束时间") + private String endTime; // 结束时间 + @ApiModelProperty("分公司sid") + private String useOrgSid; // 分公司sid + @ApiModelProperty("分公司名称") + private String useOrgName; // 分公司名称 + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + @ApiModelProperty("办结日期") + private Date finishTime; + @ApiModelProperty("实例id") + private String procInstId; // 实例id + @ApiModelProperty("流程定义id") + private String procDefId; // 流程定义id + @ApiModelProperty("任务id") + private String taskId; // 任务id + @ApiModelProperty("环节id") + private String nodeId; // 环节id + @ApiModelProperty("流程状态") + private String nodeState; // 流程状态 + @ApiModelProperty("图片") + private List files = new ArrayList<>(); +} \ No newline at end of file diff --git a/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/oaleaveapply/OaLeaveType.java b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/oaleaveapply/OaLeaveType.java new file mode 100644 index 0000000000..d3c6f70557 --- /dev/null +++ b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/oaleaveapply/OaLeaveType.java @@ -0,0 +1,11 @@ +package com.yxt.anrui.terminal.fegin.oaleaveapply; + +import lombok.Data; + +@Data +public class OaLeaveType { + + private String dictKey; //数据字典key + private String dictValue; //数据字典value + private String extra; //额外追加字符串 +} diff --git a/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/oaleaveapply/flowable/OaLeaveApplyCompleteDto.java b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/oaleaveapply/flowable/OaLeaveApplyCompleteDto.java new file mode 100644 index 0000000000..6d8b1356d8 --- /dev/null +++ b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/oaleaveapply/flowable/OaLeaveApplyCompleteDto.java @@ -0,0 +1,37 @@ +package com.yxt.anrui.terminal.fegin.oaleaveapply.flowable; + +import com.yxt.common.core.dto.Dto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @Author dimengzhe + * @Date 2022/9/6 14:57 + * @Description + */ +@Data +public class OaLeaveApplyCompleteDto implements Dto { + private static final long serialVersionUID = 6378752532534735663L; + + @ApiModelProperty(value = "用户sid") + private String userSid; + @ApiModelProperty(value = "节点id") + @NotBlank(message = "参数错误:taskDefKey") + private String taskDefKey; + @ApiModelProperty(value = "任务id") + @NotBlank(message = "参数错误:taskId") + private String taskId; + @ApiModelProperty(value = "流程id(PC)") + private String instanceId; + @ApiModelProperty(value = "流程id(移动)") + private String procInsId; + @ApiModelProperty(value = "意见") + private String comment; + @ApiModelProperty(value = "业务sid") + @NotBlank(message = "参数错误:businessSid") + private String businessSid; + + private String orgPath; +} diff --git a/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/oaleaveapply/flowable/OaLeaveApplyDelegateQuery.java b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/oaleaveapply/flowable/OaLeaveApplyDelegateQuery.java new file mode 100644 index 0000000000..e0e6b0b848 --- /dev/null +++ b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/oaleaveapply/flowable/OaLeaveApplyDelegateQuery.java @@ -0,0 +1,26 @@ +package com.yxt.anrui.terminal.fegin.oaleaveapply.flowable; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author Administrator + * @description + * @date 2023/9/28 9:28 + */ +@Data +public class OaLeaveApplyDelegateQuery { + @ApiModelProperty + private String userSid; + @ApiModelProperty("流程实例id") +// @JsonProperty("procInsId") + private String instanceId; + @ApiModelProperty("任务Id") + private String taskId; + @ApiModelProperty("审批人sid") + private String assignee; + @ApiModelProperty("填写意见") + private String views; + + +} diff --git a/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/oaleaveapply/flowable/OaLeaveApplyNodeQuery.java b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/oaleaveapply/flowable/OaLeaveApplyNodeQuery.java new file mode 100644 index 0000000000..0d7769e2e6 --- /dev/null +++ b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/oaleaveapply/flowable/OaLeaveApplyNodeQuery.java @@ -0,0 +1,25 @@ +package com.yxt.anrui.terminal.fegin.oaleaveapply.flowable; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @Author dimengzhe + * @Date 2022/9/6 15:04 + * @Description + */ +@Data +public class OaLeaveApplyNodeQuery implements Query { + private static final long serialVersionUID = 9117613683840483366L; + + @ApiModelProperty(value = "环节定义id") + @NotBlank(message = "参数错误:taskDefKey") + private String taskDefKey; + @ApiModelProperty(value = "业务sid") + private String businessSid; + @ApiModelProperty(value = "0 上一环节 1下一环节") + private Integer next; +} diff --git a/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/oaleaveapply/flowable/OaLeaveApplyNodeVo.java b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/oaleaveapply/flowable/OaLeaveApplyNodeVo.java new file mode 100644 index 0000000000..c9fde744a5 --- /dev/null +++ b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/oaleaveapply/flowable/OaLeaveApplyNodeVo.java @@ -0,0 +1,26 @@ +package com.yxt.anrui.terminal.fegin.oaleaveapply.flowable; + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @Author dimengzhe + * @Date 2022/9/6 15:03 + * @Description + */ +@Data +public class OaLeaveApplyNodeVo implements Vo { + private static final long serialVersionUID = -833419512294877848L; + + @ApiModelProperty(value = "节点名称") + private String name; + @ApiModelProperty(value = "节点id") + private String id; + @ApiModelProperty(value = "审批组") + private List candidateGroups; + @ApiModelProperty(value = "是否是最后环节") + private String endTask; +} diff --git a/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/oaleaveapply/flowable/OaLeaveApplyTaskQuery.java b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/oaleaveapply/flowable/OaLeaveApplyTaskQuery.java new file mode 100644 index 0000000000..14bc5ecec3 --- /dev/null +++ b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/oaleaveapply/flowable/OaLeaveApplyTaskQuery.java @@ -0,0 +1,48 @@ +package com.yxt.anrui.terminal.fegin.oaleaveapply.flowable; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @Author dimengzhe + * @Date 2022/9/6 15:06 + * @Description + */ +@Data +public class OaLeaveApplyTaskQuery implements Query { + private static final long serialVersionUID = 1288615499873178778L; + + /** + * 终止、驳回、撤回 + */ + @ApiModelProperty("任务Id") + @NotBlank(message = "参数错误:taskId") + private String taskId; + /** + * 终止、驳回、撤回 + */ + @ApiModelProperty("业务sid") + @NotBlank(message = "参数错误:businessSid") + private String businessSid; + /** + * 终止、驳回 + */ + @ApiModelProperty("任务意见") + private String comment; + /** + * 终止、撤回、驳回 + */ + @ApiModelProperty("用户Sid") + private String userSid; + /** + * 终止 + */ + @ApiModelProperty("流程实例Id(PC)") + private String instanceId; + + @ApiModelProperty("流程实例Id(移动)") + private String procInsId; +} diff --git a/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/oaleaveapply/flowable/SubmitOaLeaveApplyDto.java b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/oaleaveapply/flowable/SubmitOaLeaveApplyDto.java new file mode 100644 index 0000000000..d10f6ef13f --- /dev/null +++ b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/oaleaveapply/flowable/SubmitOaLeaveApplyDto.java @@ -0,0 +1,24 @@ +package com.yxt.anrui.terminal.fegin.oaleaveapply.flowable; + +import com.yxt.anrui.terminal.fegin.oaleaveapply.OaLeaveApplyDto; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author liuguohui + * @version 1.0 + * @description + * @date 2022/04/13 + */ +@ApiModel("提交") +@Data +public class SubmitOaLeaveApplyDto extends OaLeaveApplyDto { + + @ApiModelProperty("意见") + private String comment; + @ApiModelProperty("流程实例id") + private String instanceId; + @ApiModelProperty("任务id") + private String taskId; +} diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/AsBusrepairBill.java b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/AsBusrepairBill.java index fb13c38dae..fe89e22a86 100644 --- a/yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/AsBusrepairBill.java +++ b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/AsBusrepairBill.java @@ -167,4 +167,6 @@ public class AsBusrepairBill extends BaseEntity { @ApiModelProperty("报告首次提报时间") @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") private Date reportFirstDate; + @ApiModelProperty("结算金额") + private BigDecimal settleAmount; } diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/biz/asarrearsoutapply/AsArrearsoutApplyService.java b/yxt-as/src/main/java/com/yxt/anrui/as/biz/asarrearsoutapply/AsArrearsoutApplyService.java index 39f7382d60..2720388553 100644 --- a/yxt-as/src/main/java/com/yxt/anrui/as/biz/asarrearsoutapply/AsArrearsoutApplyService.java +++ b/yxt-as/src/main/java/com/yxt/anrui/as/biz/asarrearsoutapply/AsArrearsoutApplyService.java @@ -244,20 +244,10 @@ public class AsArrearsoutApplyService extends MybatisBaseService + + + + com.yxt + yxt-parent + 0.0.1 + + + + 4.0.0 + + com.yxt.anrui + yxt-oa + 0.0.1 + + yxt-oa + + + + + com.yxt + yxt-common-base + 0.0.1 + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + org.springframework.cloud + spring-cloud-starter-openfeign + + + + mysql + mysql-connector-java + runtime + + + com.baomidou + mybatis-plus-boot-starter + + + com.baomidou + mybatis-plus-annotation + + + org.projectlombok + lombok + 1.18.24 + true + + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + 2.5.6 + + + + repackage + + + + + + + + src/main/java + + **/*Mapper.xml + + + + src/main/resources + + **/*.* + + false + + + + + + diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/OaApplication.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/OaApplication.java new file mode 100644 index 0000000000..92d87c7d4a --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/OaApplication.java @@ -0,0 +1,21 @@ +package com.yxt.anrui.oa; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.cloud.openfeign.EnableFeignClients; + +/** + * OA服务 + */ +@EnableDiscoveryClient +@SpringBootApplication(scanBasePackages = { + "com.yxt.common.base.config", + "com.yxt.anrui.oa" +}) +@EnableFeignClients(basePackages = {"com.yxt.*.*"}) +public class OaApplication { + public static void main(String[] args) { + SpringApplication.run(OaApplication.class, args); + } +} diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/api/OaLeaveApplyRest.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/api/OaLeaveApplyRest.java new file mode 100644 index 0000000000..63e3606b57 --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/api/OaLeaveApplyRest.java @@ -0,0 +1,146 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.oa.api; + +import cn.hutool.core.bean.BeanUtil; +import com.yxt.anrui.oa.biz.oaleaveapply.*; +import com.yxt.anrui.oa.biz.oaleaveapply.flowable.*; +import com.yxt.anrui.oa.feign.flowable.flow.BusinessVariables; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cloud.openfeign.SpringQueryMap; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; + +@Api(tags = "请假申请") +@RestController +@RequestMapping("v1/oaleaveapply") +public class OaLeaveApplyRest { + + @Autowired + private OaLeaveApplyService oaLeaveApplyService; + + @ApiOperation("根据条件分页查询数据的列表") + @PostMapping("/listPage") + public ResultBean> listPage(@RequestBody PagerQuery pq) { + ResultBean rb = ResultBean.fireFail(); + PagerVo pv = oaLeaveApplyService.listPageVo(pq); + return rb.success().setData(pv); + } + + @ApiOperation("新增或修改") + @PostMapping("/save") + public ResultBean save(@RequestBody OaLeaveApplyDto dto) { + ResultBean rb = ResultBean.fireFail(); + oaLeaveApplyService.saveOrUpdateDto(dto); + return rb.success(); + } + + @ApiOperation("根据sid批量删除") + @DeleteMapping("/delBySids") + public ResultBean delBySids(@RequestBody String[] sids) { + return oaLeaveApplyService.delAll(sids); + } + + @ApiOperation("根据SID获取一条记录") + @GetMapping("/fetchDetailsBySid/{sid}") + public ResultBean fetchDetailsBySid(@PathVariable("sid") String sid) { + ResultBean rb = ResultBean.fireFail(); + OaLeaveApplyDetailsVo vo = oaLeaveApplyService.fetchDetailsVoBySid(sid); + return rb.success().setData(vo); + } + + @ApiOperation("初始化") + @GetMapping("/init") + public ResultBean init(@RequestParam(value = "sid",required = false) String sid, @RequestParam("userSid") String userSid, @RequestParam("orgPath") String orgPath) { + ResultBean rb = ResultBean.fireFail(); + OaLeaveApplyInitVo vo = oaLeaveApplyService.init(sid, userSid, orgPath); + return rb.success().setData(vo); + } + + @ApiOperation("提交审批流程") + @PostMapping("/submit") + public ResultBean submit(@RequestBody @Valid SubmitOaLeaveApplyDto dto) { + return oaLeaveApplyService.submit(dto); + } + + @ApiOperation(value = "办理(同意)") + @PostMapping("/complete") + public ResultBean complete(@Valid @RequestBody OaLeaveApplyCompleteDto query) { + BusinessVariables bv = new BusinessVariables(); + BeanUtil.copyProperties(query, bv); + return oaLeaveApplyService.complete(bv); + } + + @ApiOperation(value = "获取上一个环节") + @GetMapping(value = "/getPreviousNodesForReject") + public ResultBean> getPreviousNodesForReject(@Valid @SpringQueryMap OaLeaveApplyNodeQuery query) { + return oaLeaveApplyService.getPreviousNodesForReject(query); + } + + @ApiOperation(value = "获取下一个环节") + @GetMapping(value = "/getNextNodesForSubmit") + public ResultBean> getNextNodesForSubmit(@Valid @SpringQueryMap OaLeaveApplyNodeQuery query) { + return oaLeaveApplyService.getNextNodesForSubmit(query); + } + + @ApiOperation(value = "驳回任务") + @PostMapping(value = "/reject") + public ResultBean reject(@Valid @RequestBody OaLeaveApplyTaskQuery query) { + return oaLeaveApplyService.reject(query); + } + + @ApiOperation(value = "撤回流程") + @PostMapping(value = "/revokeProcess") + public ResultBean revokeProcess(@Valid @RequestBody OaLeaveApplyTaskQuery query) { + return oaLeaveApplyService.revokeProcess(query); + } + + @ApiOperation(value = "终止任务") + @PostMapping(value = "/breakProcess") + public ResultBean breakProcess(@Valid @RequestBody OaLeaveApplyTaskQuery query) { + return oaLeaveApplyService.breakProcess(query); + } + + @ApiOperation(value = "加签") + @PostMapping(value = "/delegate") + public ResultBean delegate(@RequestBody OaLeaveApplyDelegateQuery query) { + return oaLeaveApplyService.delegate(query); + } + + @ApiOperation(value = "转办") + @PutMapping(value = "/assignTask") + @ResponseBody + public ResultBean assignTask(@RequestBody OaLeaveApplyDelegateQuery query) { + return oaLeaveApplyService.assignTask(query); + } +} diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaappendix/OaAppendix.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaappendix/OaAppendix.java new file mode 100644 index 0000000000..7098bf0ee2 --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaappendix/OaAppendix.java @@ -0,0 +1,53 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.oa.biz.oaappendix; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.yxt.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "售后服务附件表", description = "售后服务附件表") +@TableName("as_appendix") +public class OaAppendix extends BaseEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("文件名") + private String fileName; // 文件名 + @ApiModelProperty("文件类型") + private String fileType; // 文件类型 + @ApiModelProperty("关联业务对象sid") + private String linkSid; // 关联业务对象sid + @ApiModelProperty("附件类型") + private String attachType; // 附件类型 + @ApiModelProperty("文件大小") + private String fileSize; // 文件大小 + @ApiModelProperty("文件的路径") + private String filePath; // 文件的路径 + +} diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaappendix/OaAppendixDetailsVo.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaappendix/OaAppendixDetailsVo.java new file mode 100644 index 0000000000..e7d3244b88 --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaappendix/OaAppendixDetailsVo.java @@ -0,0 +1,52 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.oa.biz.oaappendix; + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "售后服务附件表 视图数据详情", description = "售后服务附件表 视图数据详情") +public class OaAppendixDetailsVo implements Vo { + + private String sid; // sid + + @ApiModelProperty("文件名") + private String fileName; // 文件名 + @ApiModelProperty("文件类型") + private String fileType; // 文件类型 + @ApiModelProperty("关联业务对象sid") + private String linkSid; // 关联业务对象sid + @ApiModelProperty("附件类型") + private String attachType; // 附件类型 + @ApiModelProperty("文件大小") + private String fileSize; // 文件大小 + @ApiModelProperty("文件的路径") + private String filePath; // 文件的路径 + +} \ No newline at end of file diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaappendix/OaAppendixDto.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaappendix/OaAppendixDto.java new file mode 100644 index 0000000000..57f74b5b5a --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaappendix/OaAppendixDto.java @@ -0,0 +1,52 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.oa.biz.oaappendix; + +import com.yxt.common.core.dto.Dto; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "售后服务附件表 数据传输对象", description = "售后服务附件表 数据传输对象") +public class OaAppendixDto implements Dto { + + private String sid; // sid + + @ApiModelProperty("文件名") + private String fileName; // 文件名 + @ApiModelProperty("文件类型") + private String fileType; // 文件类型 + @ApiModelProperty("关联业务对象sid") + private String linkSid; // 关联业务对象sid + @ApiModelProperty("附件类型") + private String attachType; // 附件类型 + @ApiModelProperty("文件大小") + private String fileSize; // 文件大小 + @ApiModelProperty("文件的路径") + private String filePath; // 文件的路径 + +} \ No newline at end of file diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaappendix/OaAppendixMapper.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaappendix/OaAppendixMapper.java new file mode 100644 index 0000000000..98170cacb0 --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaappendix/OaAppendixMapper.java @@ -0,0 +1,39 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.oa.biz.oaappendix; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +@Mapper +public interface OaAppendixMapper extends BaseMapper { + + @Select("select * from as_appendix where linkSid = #{linkSid}") + List fetchByLinkSid(String linkSid); +} \ No newline at end of file diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaappendix/OaAppendixMapper.xml b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaappendix/OaAppendixMapper.xml new file mode 100644 index 0000000000..1c2b097be2 --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaappendix/OaAppendixMapper.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaappendix/OaAppendixService.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaappendix/OaAppendixService.java new file mode 100644 index 0000000000..4ab4677d0f --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaappendix/OaAppendixService.java @@ -0,0 +1,39 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.oa.biz.oaappendix; + +import com.yxt.common.base.service.MybatisBaseService; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class OaAppendixService extends MybatisBaseService { + + public List fetchByLinkSid(String linkSid) { + return baseMapper.fetchByLinkSid(linkSid); + } +} \ No newline at end of file diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/OaLeaveApply.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/OaLeaveApply.java new file mode 100644 index 0000000000..932b06a866 --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/OaLeaveApply.java @@ -0,0 +1,95 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.oa.biz.oaleaveapply; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.yxt.common.core.domain.BaseEntity; +import com.fasterxml.jackson.annotation.JsonFormat; +import java.util.Date; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: yxt-oa(请假申请)
+ * File: OaLeaveApply.java
+ * Class: com.yxt.anrui.oa.api.oaleaveapply.OaLeaveApply
+ * Description: 请假申请.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2024-11-28 15:24:37
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Data +@ApiModel(value = "请假申请", description = "请假申请") +@TableName("oa_leave_apply") +public class OaLeaveApply extends BaseEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("单据编号") + private String billNo; // 单据编号 + @ApiModelProperty("申请人") + private String createByName; // 申请人 + @ApiModelProperty("申请部门sid") + private String deptSid; // 申请部门sid + @ApiModelProperty("申请部门名称") + private String deptName; // 申请部门名称 + @ApiModelProperty("请假类型key") + private String typeKey; // 请假类型key + @ApiModelProperty("请假类型value") + private String typeValue; // 请假类型value + @ApiModelProperty("时长") + private String duration; // 时长 + @ApiModelProperty("天数") + private String days; // 天数 + @ApiModelProperty("开始时间") + private String startTime; // 开始时间 + @ApiModelProperty("结束时间") + private String endTime; // 结束时间 + @ApiModelProperty("是否财务人员") + private String isCw; + @ApiModelProperty("分公司sid") + private String useOrgSid; // 分公司sid + @ApiModelProperty("分公司名称") + private String useOrgName; // 分公司名称 + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + @ApiModelProperty("办结日期") + private Date finishTime; + @ApiModelProperty("实例id") + private String procInstId; // 实例id + @ApiModelProperty("流程定义id") + private String procDefId; // 流程定义id + @ApiModelProperty("任务id") + private String taskId; // 任务id + @ApiModelProperty("环节id") + private String nodeId; // 环节id + @ApiModelProperty("流程状态") + private String nodeState; // 流程状态 + +} diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/OaLeaveApplyDetailsVo.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/OaLeaveApplyDetailsVo.java new file mode 100644 index 0000000000..b633e6d464 --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/OaLeaveApplyDetailsVo.java @@ -0,0 +1,101 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.oa.biz.oaleaveapply; + + +import com.yxt.common.core.vo.Vo; + +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: yxt-oa(请假申请)
+ * File: OaLeaveApplyVo.java
+ * Class: com.yxt.anrui.oa.api.oaleaveapply.OaLeaveApplyVo
+ * Description: 请假申请 视图数据对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2024-11-28 15:24:37
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Data +@ApiModel(value = "请假申请 视图数据详情", description = "请假申请 视图数据详情") +public class OaLeaveApplyDetailsVo implements Vo { + + private String sid; // sid + + @ApiModelProperty("单据编号") + private String billNo; // 单据编号 + @ApiModelProperty("申请人") + private String createByName; // 申请人 + @ApiModelProperty("申请部门sid") + private String deptSid; // 申请部门sid + @ApiModelProperty("申请部门名称") + private String deptName; // 申请部门名称 + @ApiModelProperty("请假类型key") + private String typeKey; // 请假类型key + @ApiModelProperty("请假类型value") + private String typeValue; // 请假类型value + @ApiModelProperty("时长") + private String duration; // 时长 + @ApiModelProperty("天数") + private String days; // 天数 + @ApiModelProperty("开始时间") + private String startTime; // 开始时间 + @ApiModelProperty("结束时间") + private String endTime; // 结束时间 + @ApiModelProperty("是否财务人员") + private String isCw; + @ApiModelProperty("分公司sid") + private String useOrgSid; // 分公司sid + @ApiModelProperty("分公司名称") + private String useOrgName; // 分公司名称 + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + @ApiModelProperty("办结日期") + private Date finishTime; + @ApiModelProperty("实例id") + private String procInstId; // 实例id + @ApiModelProperty("流程定义id") + private String procDefId; // 流程定义id + @ApiModelProperty("任务id") + private String taskId; // 任务id + @ApiModelProperty("环节id") + private String nodeId; // 环节id + @ApiModelProperty("流程状态") + private String nodeState; // 流程状态 + @ApiModelProperty("图片") + private List files = new ArrayList<>(); +} \ No newline at end of file diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/OaLeaveApplyDto.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/OaLeaveApplyDto.java new file mode 100644 index 0000000000..93f78eda5d --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/OaLeaveApplyDto.java @@ -0,0 +1,103 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.oa.biz.oaleaveapply; + + +import com.yxt.common.core.dto.Dto; + +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: yxt-oa(请假申请)
+ * File: OaLeaveApplyDto.java
+ * Class: com.yxt.anrui.oa.api.oaleaveapply.OaLeaveApplyDto
+ * Description: 请假申请 数据传输对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2024-11-28 15:24:37
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Data +@ApiModel(value = "请假申请 数据传输对象", description = "请假申请 数据传输对象") +public class OaLeaveApplyDto implements Dto { + + private String sid; + private String userSid; + private String orgPath; + + @ApiModelProperty("请假类型") + private List types; + @ApiModelProperty("单据编号") + private String billNo; // 单据编号 + @ApiModelProperty("申请人") + private String createByName; // 申请人 + @ApiModelProperty("申请部门sid") + private String deptSid; // 申请部门sid + @ApiModelProperty("申请部门名称") + private String deptName; // 申请部门名称 + @ApiModelProperty("请假类型key") + private String typeKey; // 请假类型key + @ApiModelProperty("请假类型value") + private String typeValue; // 请假类型value + @ApiModelProperty("时长") + private String duration; // 时长 + @ApiModelProperty("天数") + private String days; // 天数 + @ApiModelProperty("开始时间") + private String startTime; // 开始时间 + @ApiModelProperty("结束时间") + private String endTime; // 结束时间 + @ApiModelProperty("分公司sid") + private String useOrgSid; // 分公司sid + @ApiModelProperty("分公司名称") + private String useOrgName; // 分公司名称 + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + @ApiModelProperty("办结日期") + private Date finishTime; + @ApiModelProperty("实例id") + private String procInstId; // 实例id + @ApiModelProperty("流程定义id") + private String procDefId; // 流程定义id + @ApiModelProperty("任务id") + private String taskId; // 任务id + @ApiModelProperty("环节id") + private String nodeId; // 环节id + @ApiModelProperty("流程状态") + private String nodeState; // 流程状态 + @ApiModelProperty("图片") + private List files = new ArrayList<>(); +} \ No newline at end of file diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/OaLeaveApplyInitVo.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/OaLeaveApplyInitVo.java new file mode 100644 index 0000000000..fb4471ca4e --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/OaLeaveApplyInitVo.java @@ -0,0 +1,103 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.oa.biz.oaleaveapply; + + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * Project: yxt-oa(请假申请)
+ * File: OaLeaveApplyVo.java
+ * Class: com.yxt.anrui.oa.api.oaleaveapply.OaLeaveApplyVo
+ * Description: 请假申请 视图数据对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2024-11-28 15:24:37
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Data +@ApiModel(value = "请假申请 视图数据详情", description = "请假申请 视图数据详情") +public class OaLeaveApplyInitVo implements Vo { + + private String sid; + private String userSid; + private String orgPath; + + @ApiModelProperty("请假类型") + private List types; + @ApiModelProperty("单据编号") + private String billNo; // 单据编号 + @ApiModelProperty("申请人") + private String createByName; // 申请人 + @ApiModelProperty("申请部门sid") + private String deptSid; // 申请部门sid + @ApiModelProperty("申请部门名称") + private String deptName; // 申请部门名称 + @ApiModelProperty("请假类型key") + private String typeKey; // 请假类型key + @ApiModelProperty("请假类型value") + private String typeValue; // 请假类型value + @ApiModelProperty("时长") + private String duration; // 时长 + @ApiModelProperty("天数") + private String days; // 天数 + @ApiModelProperty("开始时间") + private String startTime; // 开始时间 + @ApiModelProperty("结束时间") + private String endTime; // 结束时间 + @ApiModelProperty("是否财务人员") + private String isCw; + @ApiModelProperty("分公司sid") + private String useOrgSid; // 分公司sid + @ApiModelProperty("分公司名称") + private String useOrgName; // 分公司名称 + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + @ApiModelProperty("办结日期") + private Date finishTime; + @ApiModelProperty("实例id") + private String procInstId; // 实例id + @ApiModelProperty("流程定义id") + private String procDefId; // 流程定义id + @ApiModelProperty("任务id") + private String taskId; // 任务id + @ApiModelProperty("环节id") + private String nodeId; // 环节id + @ApiModelProperty("流程状态") + private String nodeState; // 流程状态 + @ApiModelProperty("图片") + private List files = new ArrayList<>(); +} \ No newline at end of file diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/OaLeaveApplyMapper.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/OaLeaveApplyMapper.java new file mode 100644 index 0000000000..ebcaa66b5f --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/OaLeaveApplyMapper.java @@ -0,0 +1,59 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.oa.biz.oaleaveapply; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import java.util.Map; + +/** + * Project: yxt-oa(请假申请)
+ * File: OaLeaveApplyMapper.java
+ * Class: com.yxt.anrui.oa.biz.oaleaveapply.OaLeaveApplyMapper
+ * Description: 请假申请.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2024-11-28 15:24:37
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Mapper +public interface OaLeaveApplyMapper extends BaseMapper { + + IPage selectPageVo(IPage page, @Param(Constants.WRAPPER) Wrapper qw); + + int updateFlowFiled(Map map); + + int selectBySid(String join); + + String selectNum(String billNo); +} \ No newline at end of file diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/OaLeaveApplyMapper.xml b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/OaLeaveApplyMapper.xml new file mode 100644 index 0000000000..aaa5d38ac9 --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/OaLeaveApplyMapper.xml @@ -0,0 +1,42 @@ + + + + + + + + + UPDATE oa_leave_apply + SET nodeState=#{nodeState}, nodeId=#{taskDefKey} + + , finishTime = NOW() + + + , procDefId=#{procDefId} + + + , procInstId=#{procInsId} + + + , taskId=#{taskId} + + WHERE sid=#{sid} + + + + + + \ No newline at end of file diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/OaLeaveApplyQuery.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/OaLeaveApplyQuery.java new file mode 100644 index 0000000000..af944fa530 --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/OaLeaveApplyQuery.java @@ -0,0 +1,93 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.oa.biz.oaleaveapply; + + +import com.yxt.common.core.query.Query; + +import com.fasterxml.jackson.annotation.JsonFormat; +import java.util.Date; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: yxt-oa(请假申请)
+ * File: OaLeaveApplyQuery.java
+ * Class: com.yxt.anrui.oa.api.oaleaveapply.OaLeaveApplyQuery
+ * Description: 请假申请 查询条件.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2024-11-28 15:24:37
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Data +@ApiModel(value = "请假申请 查询条件", description = "请假申请 查询条件") +public class OaLeaveApplyQuery implements Query { + + @ApiModelProperty("单据编号") + private String billNo; // 单据编号 + @ApiModelProperty("申请人") + private String createByName; // 申请人 + @ApiModelProperty("申请部门sid") + private String deptSid; // 申请部门sid + @ApiModelProperty("申请部门名称") + private String deptName; // 申请部门名称 + @ApiModelProperty("请假类型key") + private String typeKey; // 请假类型key + @ApiModelProperty("请假类型value") + private String typeValue; // 请假类型value + @ApiModelProperty("时长") + private String duration; // 时长 + @ApiModelProperty("天数") + private String days; // 天数 + @ApiModelProperty("开始时间") + private String startTime; // 开始时间 + @ApiModelProperty("结束时间") + private String endTime; // 结束时间 + @ApiModelProperty("分公司sid") + private String useOrgSid; // 分公司sid + @ApiModelProperty("分公司名称") + private String useOrgName; // 分公司名称 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @ApiModelProperty("办结日期") + private Date finishTimeStart; // 办结日期 + private Date finishTimeEnd; // 办结日期 + @ApiModelProperty("实例id") + private String procInstId; // 实例id + @ApiModelProperty("流程定义id") + private String procDefId; // 流程定义id + @ApiModelProperty("任务id") + private String taskId; // 任务id + @ApiModelProperty("环节id") + private String nodeId; // 环节id + @ApiModelProperty("流程状态") + private String nodeState; // 流程状态 + +} diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/OaLeaveApplyService.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/OaLeaveApplyService.java new file mode 100644 index 0000000000..8f9568dd07 --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/OaLeaveApplyService.java @@ -0,0 +1,628 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.oa.biz.oaleaveapply; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.google.common.util.concurrent.ThreadFactoryBuilder; +import com.yxt.anrui.oa.biz.oaappendix.OaAppendix; +import com.yxt.anrui.oa.biz.oaappendix.OaAppendixService; +import com.yxt.anrui.oa.biz.oaleaveapply.flowable.*; +import com.yxt.anrui.oa.feign.base.Rule; +import com.yxt.anrui.oa.feign.file.OaFileEnum; +import com.yxt.anrui.oa.feign.flowable.flow.BusinessVariables; +import com.yxt.anrui.oa.feign.flowable.flow.FlowableFeign; +import com.yxt.anrui.oa.feign.flowable.flow.ProcDefEnum; +import com.yxt.anrui.oa.feign.flowable.flow.UpdateFlowFieldVo; +import com.yxt.anrui.oa.feign.flowable.flow2.FlowDelegateQuery; +import com.yxt.anrui.oa.feign.flowable.flow2.FlowFeign; +import com.yxt.anrui.oa.feign.flowable.flowtask.FlowTaskFeign; +import com.yxt.anrui.oa.feign.flowable.flowtask.FlowTaskVo; +import com.yxt.anrui.oa.feign.flowable.flowtask.LatestTaskVo; +import com.yxt.anrui.oa.feign.message.MessageFeign; +import com.yxt.anrui.oa.feign.message.MessageFlowVo; +import com.yxt.anrui.oa.feign.message.MessageFlowableQuery; +import com.yxt.anrui.oa.feign.portal.dictcommon.DictCommon; +import com.yxt.anrui.oa.feign.portal.dictcommon.DictCommonFeign; +import com.yxt.anrui.oa.feign.portal.sysorganization.SysOrganizationFeign; +import com.yxt.anrui.oa.feign.portal.sysorganization.SysOrganizationVo; +import com.yxt.anrui.oa.feign.portal.sysstafforg.SysStaffOrgFeign; +import com.yxt.anrui.oa.feign.portal.sysuserrole.SysUserRoleFeign; +import com.yxt.anrui.oa.feign.sysuser.SysUserFeign; +import com.yxt.common.base.config.component.FileUploadComponent; +import org.apache.commons.lang3.StringUtils; +import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.base.utils.PagerUtil; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; + +import org.apache.tomcat.util.threads.ThreadPoolExecutor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.web.bind.annotation.RequestParam; + +import java.util.*; +import java.util.concurrent.*; +import java.util.stream.Collectors; + +@Service +public class OaLeaveApplyService extends MybatisBaseService { + + @Autowired + private SysOrganizationFeign sysOrganizationFeign; + @Autowired + private SysStaffOrgFeign sysStaffOrgFeign; + @Autowired + private FlowableFeign flowableFeign; + @Autowired + private FlowTaskFeign flowTaskFeign; + @Autowired + private FlowFeign flowFeign; + @Autowired + private MessageFeign messageFeign; + @Autowired + private SysUserFeign sysUserFeign; + @Autowired + private SysUserRoleFeign sysUserRoleFeign; + @Autowired + private DictCommonFeign dictCommonFeign; + @Autowired + private FileUploadComponent fileUploadComponent; + @Autowired + private OaAppendixService oaAppendixService; + + public PagerVo listPageVo(PagerQuery pq) { + OaLeaveApplyQuery query = pq.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.selectPageVo(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + public String saveOrUpdateDto(OaLeaveApplyDto dto) { + String dtoSid = dto.getSid(); + List files = dto.getFiles(); + String useOrgSid = sysStaffOrgFeign.getOrgSidByPath(dto.getOrgPath()).getData(); + SysOrganizationVo organizationVo = sysOrganizationFeign.fetchBySid(useOrgSid).getData(); + dto.setUseOrgSid(useOrgSid); + dto.setUseOrgName(organizationVo.getName()); + String deptName = ""; + String deptSid = ""; + List split = Arrays.asList(dto.getOrgPath().split("/")); + if (split.size() > 1) { + //获取本级sid获取本级部门信息 + SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(split.get(split.size() - 2)).getData(); + SysOrganizationVo sysOrganization1 = sysOrganizationFeign.fetchBySid(split.get(split.size() - 1)).getData(); + deptName = sysOrganization.getName() + "/" + sysOrganization1.getName(); + deptName = sysOrganization1.getName(); + deptSid = sysOrganization1.getSid(); + } else { + SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(split.get(0)).getData(); + deptName = sysOrganization.getName(); + deptName = sysOrganization.getName(); + deptSid = sysOrganization.getSid(); + } + dto.setDeptSid(deptSid); + dto.setDeptName(deptName); + if (StringUtils.isBlank(dtoSid)) { + //生成单据编号 + String billNo = ""; + String date = DateUtil.format(DateUtil.date(), "yyyyMM"); + billNo = "QJSQ" + organizationVo.getOrgCode() + date; + String i = baseMapper.selectNum(billNo); + if (StringUtils.isNotBlank(i)) { + billNo = Rule.getBillNo(billNo, Integer.valueOf(i).intValue()); + } else { + billNo = Rule.getBillNo(billNo, 0); + } + dto.setBillNo(billNo); + String sid = this.insertByDto(dto); + for (String file : files) { + String filePath = file.replace(fileUploadComponent.getUrlPrefix(), ""); + OaAppendix oaAppendix = new OaAppendix(); + oaAppendix.setLinkSid(dtoSid); + oaAppendix.setAttachType(OaFileEnum.OALEAVEAPPLY.getAttachType()); + oaAppendix.setFilePath(filePath); + oaAppendixService.save(oaAppendix); + } + return sid; + } + this.updateByDto(dto); + return dtoSid; + } + + public String insertByDto(OaLeaveApplyDto dto) { + OaLeaveApply entity = new OaLeaveApply(); + BeanUtil.copyProperties(dto, entity, "id", "sid"); + entity.setNodeState("待提交"); + baseMapper.insert(entity); + return entity.getSid(); + } + + public void updateByDto(OaLeaveApplyDto dto) { + String dtoSid = dto.getSid(); + if (StringUtils.isBlank(dtoSid)) { + return; + } + OaLeaveApply entity = fetchBySid(dtoSid); + BeanUtil.copyProperties(dto, entity, "id", "sid"); + baseMapper.updateById(entity); + } + + public OaLeaveApplyDetailsVo fetchDetailsVoBySid(String sid) { + OaLeaveApply entity = fetchBySid(sid); + OaLeaveApplyDetailsVo vo = new OaLeaveApplyDetailsVo(); + BeanUtil.copyProperties(entity, vo); + List oaAppendices = oaAppendixService.fetchByLinkSid(sid); + List files = new ArrayList<>(); + for (OaAppendix oaAppendix : oaAppendices) { + String url = fileUploadComponent.getUrlPrefix() + oaAppendix.getFilePath(); + files.add(url); + } + vo.setFiles(files); + return vo; + } + + public ResultBean submit(SubmitOaLeaveApplyDto dto) { + ResultBean rb = ResultBean.fireFail(); + OaLeaveApply oaLeaveApply = fetchBySid(dto.getSid()); + int r = submitBusinessData(dto, oaLeaveApply); + if (r == 3) { + return rb.setMsg("该申请不存在"); + } + if (r == 0) { + return rb.setMsg("操作失败!提交的数据不一致"); + } + //新增修改保存 + String businessSid = saveOrUpdateDto(dto); + oaLeaveApply = fetchBySid(businessSid); + //创建BusinessVariables实体对象 + BusinessVariables bv = new BusinessVariables(); + //流程中的参数赋值、若有网关,则赋值网关中判断的字段。 + Map variables = new HashMap<>(); + //用户的部门全路径sid + SysOrganizationVo deptVo = sysOrganizationFeign.fetchBySid(oaLeaveApply.getDeptSid()).getData(); + bv.setOrgSidPath(deptVo.getOrgSidPath()); + //业务sid + bv.setBusinessSid(businessSid); + //用户sid + bv.setUserSid(oaLeaveApply.getCreateBySid()); + //若app移动端有此功能,则传递appMap参数 + Map appMap = new HashMap<>(); + appMap.put("sid", businessSid); + //需和移动端沟通业务sid保存的属性具体值:appMap中sid不是固定的。移动端提供具体字段。 + variables.put("app", appMap); + //网关 + Integer days = Integer.valueOf(oaLeaveApply.getDays()); + //请假天数是否<=1 + variables.put("oneday", days <= 1); + //是否是公司 + SysOrganizationVo organizationVo = sysOrganizationFeign.fetchBySid(oaLeaveApply.getDeptSid()).getData(); + variables.put("isgs", organizationVo.getOrgLevelKey().equals("3")); + //请假天数是否在1<请假天数<=7之间 + variables.put("zj", days > 1 && days <= 7); + //请假天数>1且财务人员发起 + variables.put("cwfq", days > 1 && oaLeaveApply.getIsCw().equals("是")); + //流程定义id + bv.setModelId(ProcDefEnum.OALEAVEAPPLY.getProDefId()); + bv.setNextNodeUserSids(organizationVo.getManagerSid()); + bv.setFormVariables(variables); + if (r == 1) { + ResultBean voResultBean = flowFeign.startProcess(bv); + UpdateFlowFieldVo ufVo = voResultBean.getData(); + updateFlowFiled(BeanUtil.beanToMap(ufVo)); + //极光推送 + oaLeaveApply = fetchBySid(businessSid); + //==================================添加线程 + try { + ThreadFactory namedThreadFactory = new ThreadFactoryBuilder() + .setNameFormat("demo-pool-%d").build(); + ExecutorService pool = new ThreadPoolExecutor(2, 100, + 0L, TimeUnit.MILLISECONDS, + new LinkedBlockingQueue(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy()); + OaLeaveApply leaveApply = oaLeaveApply; + Future future1 = pool.submit(() -> { + //极光推送 + MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery(); + MessageFlowVo messageFlowVo = new MessageFlowVo(); + BeanUtil.copyProperties(ufVo, messageFlowVo); + messageFlowableQuery.setUfVo(messageFlowVo); + messageFlowableQuery.setAppMap(appMap); + messageFlowableQuery.setBusinessSid(businessSid); + messageFlowableQuery.setModuleName("请假申请"); + messageFlowableQuery.setMsgContent(leaveApply.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批"); + messageFlowableQuery.setMsgTitle("请假申请"); + messageFeign.pushMessage(messageFlowableQuery); + }); + } catch (Exception e) { + e.printStackTrace(); + } + //==================================添加线程 + return voResultBean; + } + if (r == 2) { + // ToDo:驳回到发起人后再次提交 + if (StringUtils.isBlank(dto.getInstanceId())) { + return rb.setMsg("参数错误:instanceId"); + } + bv.setTaskId(oaLeaveApply.getTaskId()); + bv.setTaskDefKey(oaLeaveApply.getNodeId()); + bv.setComment(StringUtils.isNotBlank(dto.getComment()) ? dto.getComment() : "重新提交"); + bv.setInstanceId(dto.getInstanceId()); + return complete(bv); + } + return rb; + } + + private synchronized int submitBusinessData(SubmitOaLeaveApplyDto dto, OaLeaveApply oaLeaveApply) { + int r = 0; + if (StringUtils.isBlank(dto.getSid())) { + r = 1; + } else { + if (oaLeaveApply != null) { + String businessTaskId = oaLeaveApply.getTaskId(); + if (StringUtils.isBlank(businessTaskId) && StringUtils.isBlank(dto.getTaskId())) { + //新提交 + r = 1; + } else if (StringUtils.isNotBlank(businessTaskId) && businessTaskId.equals(dto.getTaskId())) { + //二次提交//只有数据一致的时候才能进行下一步 + r = 2; + } + } else { + r = 3; + } + + } + return r; + } + + private int updateFlowFiled(Map map) { + return baseMapper.updateFlowFiled(map); + } + + public ResultBean complete(BusinessVariables bv) { + ResultBean rb = ResultBean.fireFail(); + String businessSid = bv.getBusinessSid(); + OaLeaveApply oaLeaveApply = fetchBySid(businessSid); + Map variables = new HashMap<>(); + //网关 + Integer days = Integer.valueOf(oaLeaveApply.getDays()); + //请假天数是否<=1 + variables.put("oneday", days <= 1); + //是否是公司 + SysOrganizationVo organizationVo = sysOrganizationFeign.fetchBySid(oaLeaveApply.getDeptSid()).getData(); + variables.put("isgs", organizationVo.getOrgLevelKey().equals("3")); + //请假天数是否在1<请假天数<=7之间 + variables.put("zj", days > 1 && days <= 7); + //请假天数>1且财务人员发起 + variables.put("cwfq", days > 1 && oaLeaveApply.getIsCw().equals("是")); + Map appMap = new HashMap<>(); + appMap.put("sid", businessSid); + variables.put("app", appMap); + //======================================= + bv.setNextNodeUserSids(organizationVo.getManagerSid()); + bv.setFormVariables(variables); + SysOrganizationVo deptVo = sysOrganizationFeign.fetchBySid(oaLeaveApply.getDeptSid()).getData(); + bv.setOrgSidPath(deptVo.getOrgSidPath()); + if (bv.getTaskId().equals(oaLeaveApply.getTaskId())) { + ResultBean resultBean = flowFeign.handleProsess(bv); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + UpdateFlowFieldVo ufVo = resultBean.getData(); + updateFlowFiled(BeanUtil.beanToMap(resultBean.getData())); + if ("Event_end".equals(resultBean.getData().getTaskDefKey())) { + + } else { + //极光推送 + oaLeaveApply = fetchBySid(businessSid); + //==================================添加线程 + try { + ThreadFactory namedThreadFactory = new ThreadFactoryBuilder() + .setNameFormat("demo-pool-%d").build(); + ExecutorService pool = new ThreadPoolExecutor(2, 100, + 0L, TimeUnit.MILLISECONDS, + new LinkedBlockingQueue(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy()); + OaLeaveApply leaveApply = oaLeaveApply; + Future future1 = pool.submit(() -> { + //极光推送 + MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery(); + MessageFlowVo messageFlowVo = new MessageFlowVo(); + BeanUtil.copyProperties(ufVo, messageFlowVo); + ufVo.setProcDefId(leaveApply.getProcDefId()); + ufVo.setProcInsId(leaveApply.getProcInstId()); + messageFlowableQuery.setUfVo(messageFlowVo); + messageFlowableQuery.setAppMap(appMap); + messageFlowableQuery.setBusinessSid(businessSid); + messageFlowableQuery.setModuleName("请假申请"); + messageFlowableQuery.setMsgContent(leaveApply.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批"); + messageFlowableQuery.setMsgTitle("请假申请"); + messageFeign.pushMessage(messageFlowableQuery); + }); + } catch (Exception e) { + e.printStackTrace(); + } + //==================================添加线程 + } + return rb.success().setData(resultBean.getData()); + } else { + return rb.setMsg("操作失败!提交的数据不一致"); + } + } + + public ResultBean> getPreviousNodesForReject(OaLeaveApplyNodeQuery query) { + ResultBean> rb = ResultBean.fireFail(); + BusinessVariables bv = new BusinessVariables(); + BeanUtil.copyProperties(query, bv); + //流程中的参数赋值、若有网关,则赋值网关中判断的字段。 + Map variables = new HashMap<>(); + //查询业务信息 + OaLeaveApply oaLeaveApply = fetchBySid(query.getBusinessSid()); + //网关 + Integer days = Integer.valueOf(oaLeaveApply.getDays()); + //请假天数是否<=1 + variables.put("oneday", days <= 1); + //是否是公司 + SysOrganizationVo organizationVo = sysOrganizationFeign.fetchBySid(oaLeaveApply.getDeptSid()).getData(); + variables.put("isgs", organizationVo.getOrgLevelKey().equals("3")); + //请假天数是否在1<请假天数<=7之间 + variables.put("zj", days > 1 && days <= 7); + //请假天数>1且财务人员发起 + variables.put("cwfq", days > 1 && oaLeaveApply.getIsCw().equals("是")); + bv.setModelId(oaLeaveApply.getProcDefId()); + bv.setFormVariables(variables); + //======================================= + ResultBean>> resultBean = flowTaskFeign.getPreviousNodesForReject(bv); + //判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo + List voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), OaLeaveApplyNodeVo.class)).collect(Collectors.toList()); + return rb.success().setData(voList); + } + + public ResultBean> getNextNodesForSubmit(OaLeaveApplyNodeQuery query) { + ResultBean> rb = ResultBean.fireFail(); + BusinessVariables bv = new BusinessVariables(); + BeanUtil.copyProperties(query, bv); + //流程中的参数赋值、若有网关,则赋值网关中判断的字段。 + Map variables = new HashMap<>(); + //查询业务信息 + OaLeaveApply oaLeaveApply = fetchBySid(query.getBusinessSid()); + //网关 + Integer days = Integer.valueOf(oaLeaveApply.getDays()); + //请假天数是否<=1 + variables.put("oneday", days <= 1); + //是否是公司 + SysOrganizationVo organizationVo = sysOrganizationFeign.fetchBySid(oaLeaveApply.getDeptSid()).getData(); + variables.put("isgs", organizationVo.getOrgLevelKey().equals("3")); + //请假天数是否在1<请假天数<=7之间 + variables.put("zj", days > 1 && days <= 7); + //请假天数>1且财务人员发起 + variables.put("cwfq", days > 1 && oaLeaveApply.getIsCw().equals("是")); + bv.setModelId(oaLeaveApply.getProcDefId()); + bv.setFormVariables(variables); + //======================================= + ResultBean>> resultBean = flowTaskFeign.getNextNodesForSubmit(bv); + //判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo + List voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), OaLeaveApplyNodeVo.class)).collect(Collectors.toList()); + return rb.success().setData(voList); + } + + public ResultBean reject(OaLeaveApplyTaskQuery query) { + ResultBean rb = ResultBean.fireFail(); + String businessSid = query.getBusinessSid(); + OaLeaveApply oaLeaveApply = fetchBySid(businessSid); + if (oaLeaveApply == null) { + return rb.setMsg("该申请不存在"); + } + String businessTaskId = oaLeaveApply.getTaskId(); + if (StringUtils.isNotBlank(businessTaskId)) { + if (businessTaskId.equals(query.getTaskId())) { + if (StringUtils.isBlank(query.getComment())) { + return rb.setMsg("请填写意见"); + } + if (StringUtils.isBlank(query.getUserSid())) { + return rb.setMsg("参数错误:userSid"); + } + FlowTaskVo flowTaskVo = new FlowTaskVo(); + BeanUtil.copyProperties(query, flowTaskVo); + Map variables = new HashMap<>(); + Map appMap = new HashMap<>(); + appMap.put("sid", businessSid); + variables.put("app", appMap); + //网关 + Integer days = Integer.valueOf(oaLeaveApply.getDays()); + //请假天数是否<=1 + variables.put("oneday", days <= 1); + //是否是公司 + SysOrganizationVo organizationVo = sysOrganizationFeign.fetchBySid(oaLeaveApply.getDeptSid()).getData(); + variables.put("isgs", organizationVo.getOrgLevelKey().equals("3")); + //请假天数是否在1<请假天数<=7之间 + variables.put("zj", days > 1 && days <= 7); + //请假天数>1且财务人员发起 + variables.put("cwfq", days > 1 && oaLeaveApply.getIsCw().equals("是")); + flowTaskVo.setValues(variables); + ResultBean resultBean = flowableFeign.taskReject(flowTaskVo); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + UpdateFlowFieldVo ufVo = resultBean.getData(); + Map map = BeanUtil.beanToMap(ufVo); + //更新业务中的流程相关的参数 + updateFlowFiled(map); + //极光推送 + oaLeaveApply = fetchBySid(businessSid); + //==================================添加线程 + try { + ThreadFactory namedThreadFactory = new ThreadFactoryBuilder() + .setNameFormat("demo-pool-%d").build(); + ExecutorService pool = new ThreadPoolExecutor(2, 100, + 0L, TimeUnit.MILLISECONDS, + new LinkedBlockingQueue(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy()); + OaLeaveApply leaveApply = oaLeaveApply; + Future future1 = pool.submit(() -> { + //极光推送 + MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery(); + MessageFlowVo messageFlowVo = new MessageFlowVo(); + BeanUtil.copyProperties(ufVo, messageFlowVo); + String procId = leaveApply.getProcInstId(); + ufVo.setProcInsId(procId); + ufVo.setProcDefId(leaveApply.getProcDefId()); + messageFlowableQuery.setUfVo(messageFlowVo); + messageFlowableQuery.setAppMap(appMap); + messageFlowableQuery.setBusinessSid(businessSid); + messageFlowableQuery.setModuleName("请假申请"); + ResultBean> listResultBean = flowTaskFeign.getLatestTasks(procId); + String nextNodeUserSids = listResultBean.getData().get(0).getASSIGNEE_(); + List receiveSidList = Arrays.asList(nextNodeUserSids.split(",")); + if (receiveSidList.size() == 1 && receiveSidList.get(0).equals(leaveApply.getCreateBySid())) { + messageFlowableQuery.setMsgContent("您提交的" + messageFlowableQuery.getModuleName() + "已被驳回,请重新提交"); + } else { + messageFlowableQuery.setMsgContent(leaveApply.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批"); + } + messageFlowableQuery.setMsgTitle("请假申请"); + messageFeign.pushMessage(messageFlowableQuery); + }); + } catch (Exception e) { + e.printStackTrace(); + } + //==================================添加线程 + return rb.success(); + } + } + return rb.setMsg("操作失败!提交的数据不一致!"); + } + + public ResultBean revokeProcess(OaLeaveApplyTaskQuery query) { + ResultBean rb = ResultBean.fireFail(); + if (StringUtils.isBlank(query.getUserSid())) { + return rb.setMsg("参数错误:userSid"); + } + OaLeaveApply oaLeaveApply = fetchBySid(query.getBusinessSid()); + String businessTaskId = oaLeaveApply.getTaskId(); + if (StringUtils.isNotBlank(businessTaskId)) { + if (businessTaskId.equals(query.getTaskId())) { + FlowTaskVo flowTaskVo = new FlowTaskVo(); + BeanUtil.copyProperties(query, flowTaskVo); + ResultBean resultBean = flowableFeign.revokeProcess(flowTaskVo); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + updateFlowFiled(BeanUtil.beanToMap(resultBean.getData())); + return rb.success().setData(resultBean.getData()); + } + } + return rb.setMsg("操作失败,提交的数据不一致!"); + } + + public ResultBean breakProcess(OaLeaveApplyTaskQuery query) { + ResultBean rb = ResultBean.fireFail(); + if (StringUtils.isBlank(query.getInstanceId())) { + return rb.setMsg("参数错误:instanceId"); + } + if (StringUtils.isBlank(query.getUserSid())) { + return rb.setMsg("参数错误:userSid"); + } + if (StringUtils.isBlank(query.getComment())) { + return rb.setMsg("请填写意见"); + } + OaLeaveApply oaLeaveApply = fetchBySid(query.getBusinessSid()); + String businessTaskId = oaLeaveApply.getTaskId(); + if (StringUtils.isNotBlank(businessTaskId)) { + if (query.getUserSid().equals(oaLeaveApply.getCreateBySid())) { + FlowTaskVo flowTaskVo = new FlowTaskVo(); + BeanUtil.copyProperties(query, flowTaskVo); + ResultBean resultBean = flowableFeign.breakProcess(flowTaskVo); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + Map map = BeanUtil.beanToMap(resultBean.getData()); + updateFlowFiled(map); + return rb.success().setData(resultBean.getData()); + } else { + if (businessTaskId.equals(query.getTaskId())) { + FlowTaskVo flowTaskVo = new FlowTaskVo(); + BeanUtil.copyProperties(query, flowTaskVo); + ResultBean resultBean = flowableFeign.breakProcess(flowTaskVo); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + Map map = BeanUtil.beanToMap(resultBean.getData()); + updateFlowFiled(map); + return rb.success().setData(resultBean.getData()); + } + } + + } + return rb.setMsg("操作失败!提交的数据不一致!"); + } + + public ResultBean delegate(OaLeaveApplyDelegateQuery query) { + ResultBean rb = ResultBean.fireFail(); + FlowDelegateQuery delegateQuery = new FlowDelegateQuery(); + BeanUtil.copyProperties(query, delegateQuery); + flowFeign.delegate(delegateQuery); + return rb.success(); + } + + public ResultBean assignTask(OaLeaveApplyDelegateQuery query) { + ResultBean rb = ResultBean.fireFail(); + FlowDelegateQuery delegateQuery = new FlowDelegateQuery(); + BeanUtil.copyProperties(query, delegateQuery); + flowFeign.assignTask(delegateQuery); + return rb.success(); + } + + public ResultBean delAll(String[] sids) { + ResultBean rb = ResultBean.fireFail(); + //查询该sid中是否有流程不是待提交的 + int count = baseMapper.selectBySid(StringUtils.join(sids, ",")); + if (count > 0) { + return rb.setMsg("删除的数据中包含已提交或已办结审批的数据,删除失败"); + } + delBySids(sids); + return rb.success(); + } + + public OaLeaveApplyInitVo init(String sid, String userSid, String orgPath) { + OaLeaveApplyInitVo oaLeaveApplyInitVo = new OaLeaveApplyInitVo(); + List types = new ArrayList<>(); + List leaveType = dictCommonFeign.selectByType("leaveType").getData(); + for (DictCommon dictCommon : leaveType) { + OaLeaveType oaLeaveType = new OaLeaveType(); + oaLeaveType.setDictKey(dictCommon.getDictKey()); + oaLeaveType.setDictValue(dictCommon.getDictValue()); + types.add(oaLeaveType); + } + oaLeaveApplyInitVo.setTypes(types); + oaLeaveApplyInitVo.setUserSid(userSid); + oaLeaveApplyInitVo.setOrgPath(orgPath); + return oaLeaveApplyInitVo; + } +} \ No newline at end of file diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/OaLeaveApplyVo.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/OaLeaveApplyVo.java new file mode 100644 index 0000000000..da11384b42 --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/OaLeaveApplyVo.java @@ -0,0 +1,94 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.oa.biz.oaleaveapply; + + +import com.yxt.common.core.vo.Vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import java.util.Date; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: yxt-oa(请假申请)
+ * File: OaLeaveApplyVo.java
+ * Class: com.yxt.anrui.oa.api.oaleaveapply.OaLeaveApplyVo
+ * Description: 请假申请 视图数据对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2024-11-28 15:24:37
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Data +@ApiModel(value = "请假申请 视图数据对象", description = "请假申请 视图数据对象") +public class OaLeaveApplyVo implements Vo { + + private String sid; // sid + + @ApiModelProperty("单据编号") + private String billNo; // 单据编号 + @ApiModelProperty("申请人") + private String createByName; // 申请人 + @ApiModelProperty("申请部门sid") + private String deptSid; // 申请部门sid + @ApiModelProperty("申请部门名称") + private String deptName; // 申请部门名称 + @ApiModelProperty("请假类型key") + private String typeKey; // 请假类型key + @ApiModelProperty("请假类型value") + private String typeValue; // 请假类型value + @ApiModelProperty("时长") + private String duration; // 时长 + @ApiModelProperty("天数") + private String days; // 天数 + @ApiModelProperty("开始时间") + private String startTime; // 开始时间 + @ApiModelProperty("结束时间") + private String endTime; // 结束时间 + @ApiModelProperty("分公司sid") + private String useOrgSid; // 分公司sid + @ApiModelProperty("分公司名称") + private String useOrgName; // 分公司名称 + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + @ApiModelProperty("办结日期") + private Date finishTime; // 办结日期 + @ApiModelProperty("实例id") + private String procInstId; // 实例id + @ApiModelProperty("流程定义id") + private String procDefId; // 流程定义id + @ApiModelProperty("任务id") + private String taskId; // 任务id + @ApiModelProperty("环节id") + private String nodeId; // 环节id + @ApiModelProperty("流程状态") + private String nodeState; // 流程状态 + +} diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/OaLeaveType.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/OaLeaveType.java new file mode 100644 index 0000000000..1d2086cff1 --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/OaLeaveType.java @@ -0,0 +1,11 @@ +package com.yxt.anrui.oa.biz.oaleaveapply; + +import lombok.Data; + +@Data +public class OaLeaveType { + + private String dictKey; //数据字典key + private String dictValue; //数据字典value + private String extra; //额外追加字符串 +} diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/flowable/OaLeaveApplyCompleteDto.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/flowable/OaLeaveApplyCompleteDto.java new file mode 100644 index 0000000000..82ac70cb7c --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/flowable/OaLeaveApplyCompleteDto.java @@ -0,0 +1,37 @@ +package com.yxt.anrui.oa.biz.oaleaveapply.flowable; + +import com.yxt.common.core.dto.Dto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @Author dimengzhe + * @Date 2022/9/6 14:57 + * @Description + */ +@Data +public class OaLeaveApplyCompleteDto implements Dto { + private static final long serialVersionUID = 6378752532534735663L; + + @ApiModelProperty(value = "用户sid") + private String userSid; + @ApiModelProperty(value = "节点id") + @NotBlank(message = "参数错误:taskDefKey") + private String taskDefKey; + @ApiModelProperty(value = "任务id") + @NotBlank(message = "参数错误:taskId") + private String taskId; + @ApiModelProperty(value = "流程id(PC)") + private String instanceId; + @ApiModelProperty(value = "流程id(移动)") + private String procInsId; + @ApiModelProperty(value = "意见") + private String comment; + @ApiModelProperty(value = "业务sid") + @NotBlank(message = "参数错误:businessSid") + private String businessSid; + + private String orgPath; +} diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/flowable/OaLeaveApplyDelegateQuery.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/flowable/OaLeaveApplyDelegateQuery.java new file mode 100644 index 0000000000..32d55f0092 --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/flowable/OaLeaveApplyDelegateQuery.java @@ -0,0 +1,26 @@ +package com.yxt.anrui.oa.biz.oaleaveapply.flowable; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author Administrator + * @description + * @date 2023/9/28 9:28 + */ +@Data +public class OaLeaveApplyDelegateQuery { + @ApiModelProperty + private String userSid; + @ApiModelProperty("流程实例id") +// @JsonProperty("procInsId") + private String instanceId; + @ApiModelProperty("任务Id") + private String taskId; + @ApiModelProperty("审批人sid") + private String assignee; + @ApiModelProperty("填写意见") + private String views; + + +} diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/flowable/OaLeaveApplyNodeQuery.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/flowable/OaLeaveApplyNodeQuery.java new file mode 100644 index 0000000000..1311b11940 --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/flowable/OaLeaveApplyNodeQuery.java @@ -0,0 +1,25 @@ +package com.yxt.anrui.oa.biz.oaleaveapply.flowable; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @Author dimengzhe + * @Date 2022/9/6 15:04 + * @Description + */ +@Data +public class OaLeaveApplyNodeQuery implements Query { + private static final long serialVersionUID = 9117613683840483366L; + + @ApiModelProperty(value = "环节定义id") + @NotBlank(message = "参数错误:taskDefKey") + private String taskDefKey; + @ApiModelProperty(value = "业务sid") + private String businessSid; + @ApiModelProperty(value = "0 上一环节 1下一环节") + private Integer next; +} diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/flowable/OaLeaveApplyNodeVo.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/flowable/OaLeaveApplyNodeVo.java new file mode 100644 index 0000000000..ba4aa0c78a --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/flowable/OaLeaveApplyNodeVo.java @@ -0,0 +1,26 @@ +package com.yxt.anrui.oa.biz.oaleaveapply.flowable; + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @Author dimengzhe + * @Date 2022/9/6 15:03 + * @Description + */ +@Data +public class OaLeaveApplyNodeVo implements Vo { + private static final long serialVersionUID = -833419512294877848L; + + @ApiModelProperty(value = "节点名称") + private String name; + @ApiModelProperty(value = "节点id") + private String id; + @ApiModelProperty(value = "审批组") + private List candidateGroups; + @ApiModelProperty(value = "是否是最后环节") + private String endTask; +} diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/flowable/OaLeaveApplyTaskQuery.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/flowable/OaLeaveApplyTaskQuery.java new file mode 100644 index 0000000000..09597b8163 --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/flowable/OaLeaveApplyTaskQuery.java @@ -0,0 +1,48 @@ +package com.yxt.anrui.oa.biz.oaleaveapply.flowable; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @Author dimengzhe + * @Date 2022/9/6 15:06 + * @Description + */ +@Data +public class OaLeaveApplyTaskQuery implements Query { + private static final long serialVersionUID = 1288615499873178778L; + + /** + * 终止、驳回、撤回 + */ + @ApiModelProperty("任务Id") + @NotBlank(message = "参数错误:taskId") + private String taskId; + /** + * 终止、驳回、撤回 + */ + @ApiModelProperty("业务sid") + @NotBlank(message = "参数错误:businessSid") + private String businessSid; + /** + * 终止、驳回 + */ + @ApiModelProperty("任务意见") + private String comment; + /** + * 终止、撤回、驳回 + */ + @ApiModelProperty("用户Sid") + private String userSid; + /** + * 终止 + */ + @ApiModelProperty("流程实例Id(PC)") + private String instanceId; + + @ApiModelProperty("流程实例Id(移动)") + private String procInsId; +} diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/flowable/SubmitOaLeaveApplyDto.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/flowable/SubmitOaLeaveApplyDto.java new file mode 100644 index 0000000000..8d817e757d --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/flowable/SubmitOaLeaveApplyDto.java @@ -0,0 +1,24 @@ +package com.yxt.anrui.oa.biz.oaleaveapply.flowable; + +import com.yxt.anrui.oa.biz.oaleaveapply.OaLeaveApplyDto; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author liuguohui + * @version 1.0 + * @description + * @date 2022/04/13 + */ +@ApiModel("提交") +@Data +public class SubmitOaLeaveApplyDto extends OaLeaveApplyDto { + + @ApiModelProperty("意见") + private String comment; + @ApiModelProperty("流程实例id") + private String instanceId; + @ApiModelProperty("任务id") + private String taskId; +} diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/base/BillNo.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/base/BillNo.java new file mode 100644 index 0000000000..e7cde6eae5 --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/base/BillNo.java @@ -0,0 +1,24 @@ +package com.yxt.anrui.oa.feign.base; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * @Author dimengzhe + * @Date 2022/7/1 9:46 + * @Description + */ +@Data +public class BillNo implements Serializable { + private static final long serialVersionUID = 1598887042562656350L; + +// @ApiModelProperty(value = "品牌编码") +// private String brandCode; + @ApiModelProperty(value = "单据名称首字母") + private String billType; + @ApiModelProperty(value = "分公司编码") + private String orgCode; + +} diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/base/Rule.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/base/Rule.java new file mode 100644 index 0000000000..a3ab6559ac --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/base/Rule.java @@ -0,0 +1,44 @@ +package com.yxt.anrui.oa.feign.base; + +import cn.hutool.core.date.DateUtil; +import org.springframework.util.StringUtils; + +/** + * @Author dimengzhe + * @Date 2022/7/1 9:44 + * @Description 规则 + */ +public class Rule { + + /** + * 单据编号规则:单据名称大写首字母+分公司编码+年份+月份+4位顺序号 + * 单据名称大写首字母+分公司编码+年份+月份 + * 注意:品牌编码暂不用 + * + * @return + */ + public static String getBill(BillNo b) { + String billType = b.getBillType(); + String orgCode = b.getOrgCode(); + String date = DateUtil.format(DateUtil.date(), "yyyyMM"); + String bill = billType; + if (!StringUtils.isEmpty(orgCode)) { + bill = bill + orgCode; + } + bill = bill + date; + return bill; + } + + /** + * 生成单据编号规则 + * + * @param bill 单据名称大写首字母+分公司编码+年份+月份 + * @param i 根据单据编号包含单据名称大写首字母+分公司编码+年份+月份查询出来的单据的个数 + * @return + */ + public static String getBillNo(String bill, int i) { + String num = String.format("%04d", i + 1); // 不足4位补0 + String billNo = bill + num; + return billNo; + } +} diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/file/OaFileEnum.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/file/OaFileEnum.java new file mode 100644 index 0000000000..a587a4f77e --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/file/OaFileEnum.java @@ -0,0 +1,38 @@ +package com.yxt.anrui.oa.feign.file; + +/** + * @Author fan + * @Date 2022/11/14 22:46 + * @Description + */ +public enum OaFileEnum { + + OALEAVEAPPLY("001", "请假申请附件"), + ; + + + /** + * 附件类型 + */ + private final String attachType; + + /** + * 代号 + */ + private final String mark; + + OaFileEnum(String attachType, String mark) { + this.attachType = attachType; + this.mark = mark; + } + + public String getAttachType() { + return attachType; + } + + public String getMark() { + return mark; + } + + +} diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flow/BusinessVariables.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flow/BusinessVariables.java new file mode 100644 index 0000000000..1b877f3ebb --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flow/BusinessVariables.java @@ -0,0 +1,65 @@ +package com.yxt.anrui.oa.feign.flowable.flow; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.HashMap; +import java.util.Map; + +/** + * 业务系统调用flowable流程传递参数的格式 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class BusinessVariables { + /** + * 分公司sid + */ + public static final String ORGPATH="orgPath"; + /** + * 流程定义的id + */ + private String modelId; + /** + * 审批意见 + */ + private String comment; + /** + * 流程实例的id + */ + private String instanceId; + /** + * taskId + */ + private String taskId; + /** + * 当前用户的id + */ + private String userSid; + /** + * 当前用户部门的全路径 + */ + private String orgSidPath; + /** + * 业务sid + */ + private String businessSid; + /** + * 环节定义的ID + */ + private String taskDefKey; + /** + * nextNodeUserSids 下一环节的用户sid + */ + private String nextNodeUserSids; + /** + * 业务参数,按需传递 + */ + private Map formVariables =new HashMap<>(); + /* @ApiModelProperty("机构sid:切换结构使用") + private String orgPath;*/ +} diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flow/FlowProcessMapQuery.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flow/FlowProcessMapQuery.java new file mode 100644 index 0000000000..f5141bb996 --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flow/FlowProcessMapQuery.java @@ -0,0 +1,20 @@ +package com.yxt.anrui.oa.feign.flowable.flow; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Map; + +/** + * @description: 流程获取map + * @author: dimengzhe + * @date: 2023/5/26 + **/ +@Data +public class FlowProcessMapQuery { + + @ApiModelProperty("变量") + private Map variables; + @ApiModelProperty("流程id") + private String proDefKey; +} diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flow/FlowableFeign.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flow/FlowableFeign.java new file mode 100644 index 0000000000..5c00739679 --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flow/FlowableFeign.java @@ -0,0 +1,38 @@ +package com.yxt.anrui.oa.feign.flowable.flow; + +import com.yxt.anrui.oa.feign.flowable.flowtask.FlowTaskVo; +import com.yxt.common.core.result.ResultBean; +import io.swagger.annotations.ApiOperation; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.util.Map; + +@FeignClient( + contextId = "anrui-flowable-Flowable", + name = "anrui-flowable", + path = "v1/flow") +public interface FlowableFeign { + + @ApiOperation(value = "获取map") + @PostMapping(value = "/getMap") + @ResponseBody + ResultBean> getMap(@RequestBody FlowProcessMapQuery query); + + @ApiOperation(value = "驳回流程") + @PostMapping(value = "/taskReject") + @ResponseBody + ResultBean taskReject(@RequestBody FlowTaskVo fl); + + @ApiOperation(value = "撤回流程") + @PostMapping(value = "/revokeProcess") + @ResponseBody + ResultBean revokeProcess(@RequestBody FlowTaskVo fl); + + @ApiOperation(value = "终止流程") + @PostMapping(value = "/breakProcess") + @ResponseBody + ResultBean breakProcess(@RequestBody FlowTaskVo fl); +} \ No newline at end of file diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flow/ProcDefEnum.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flow/ProcDefEnum.java new file mode 100644 index 0000000000..c0f1a589f8 --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flow/ProcDefEnum.java @@ -0,0 +1,38 @@ +package com.yxt.anrui.oa.feign.flowable.flow; + +/** + * 流程定义:流程名称与代号枚举类 + */ +public enum ProcDefEnum { + + + /***************************正式流程id***********************************/ + OALEAVEAPPLY("请假申请", "process_su0yph7n:1:15957504"), + ; + + + ProcDefEnum(String proDefName, String proDefId) { + this.proDefName = proDefName; + this.proDefId = proDefId; + + } + + /** + * 流程类型名称 + */ + private final String proDefName; + + /** + * 流程代号 + */ + private final String proDefId; + + public String getProDefName() { + return proDefName; + } + + public String getProDefId() { + return proDefId; + } +} + diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flow/UpdateFlowFieldVo.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flow/UpdateFlowFieldVo.java new file mode 100644 index 0000000000..3da335b6c0 --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flow/UpdateFlowFieldVo.java @@ -0,0 +1,68 @@ +package com.yxt.anrui.oa.feign.flowable.flow; + +public class UpdateFlowFieldVo { + + private String sid; + private String procDefId; + private String nodeState; + private String procInsId; + private String taskDefKey; + private String taskId; + private String nextNodeUserSids; + + public String getNextNodeUserSids() { + return nextNodeUserSids; + } + + public void setNextNodeUserSids(String nextNodeUserSids) { + this.nextNodeUserSids = nextNodeUserSids; + } + + public String getSid() { + return sid; + } + + public void setSid(String sid) { + this.sid = sid; + } + + public String getProcDefId() { + return procDefId; + } + + public void setProcDefId(String procDefId) { + this.procDefId = procDefId; + } + + public String getNodeState() { + return nodeState; + } + + public void setNodeState(String nodeState) { + this.nodeState = nodeState; + } + + public String getProcInsId() { + return procInsId; + } + + public void setProcInsId(String procInsId) { + this.procInsId = procInsId; + } + + public String getTaskDefKey() { + return taskDefKey; + } + + public void setTaskDefKey(String taskDefKey) { + this.taskDefKey = taskDefKey; + } + + public String getTaskId() { + return taskId; + } + + public void setTaskId(String taskId) { + this.taskId = taskId; + } +} diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flow2/FlowDelegateQuery.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flow2/FlowDelegateQuery.java new file mode 100644 index 0000000000..07860f15ca --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flow2/FlowDelegateQuery.java @@ -0,0 +1,23 @@ +package com.yxt.anrui.oa.feign.flowable.flow2; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author Administrator + * @description + * @date 2023/10/8 15:58 + */ +@Data +public class FlowDelegateQuery { + @ApiModelProperty + private String userSid; + @ApiModelProperty("流程实例id") + private String instanceId; + @ApiModelProperty("任务Id") + private String taskId; + @ApiModelProperty("审批人sid") + private String assignee; + @ApiModelProperty("填写意见") + private String views; +} diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flow2/FlowFeign.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flow2/FlowFeign.java new file mode 100644 index 0000000000..555d495f8a --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flow2/FlowFeign.java @@ -0,0 +1,36 @@ +package com.yxt.anrui.oa.feign.flowable.flow2; + +import com.yxt.anrui.oa.feign.flowable.flow.BusinessVariables; +import com.yxt.anrui.oa.feign.flowable.flow.UpdateFlowFieldVo; +import com.yxt.common.core.result.ResultBean; +import io.swagger.annotations.ApiOperation; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.ResponseBody; + +@FeignClient( + contextId = "anrui-flowable-Flow", + name = "anrui-flowable", + path = "v2/flow") +public interface FlowFeign { + + @ApiOperation(value = "加签") + @PostMapping(value = "/delegate") + public ResultBean delegate(@RequestBody FlowDelegateQuery flowDelegateQuery); + + @ApiOperation(value = "启动流程") + @PostMapping(value = "/startProcess") + @ResponseBody + ResultBean startProcess(@RequestBody BusinessVariables dto); + + @ApiOperation(value = "处理流程") + @PostMapping(value = "/handleProsess") + @ResponseBody + ResultBean handleProsess(@RequestBody BusinessVariables bv); + + @ApiOperation(value = "转办") + @PostMapping(value = "/assignTask") + public ResultBean assignTask(@RequestBody FlowDelegateQuery flowDelegateQuery); + +} \ No newline at end of file diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flowtask/FlowTaskFeign.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flowtask/FlowTaskFeign.java new file mode 100644 index 0000000000..cdebb71a40 --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flowtask/FlowTaskFeign.java @@ -0,0 +1,31 @@ +package com.yxt.anrui.oa.feign.flowable.flowtask; + +import com.yxt.anrui.oa.feign.flowable.flow.BusinessVariables; +import com.yxt.common.core.result.ResultBean; +import io.swagger.annotations.ApiOperation; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +import java.util.List; + +@FeignClient( + contextId = "anrui-flowable-FlowTask", + name = "anrui-flowable", + path = "v1/flowable/task") +public interface FlowTaskFeign { + + @ApiOperation(value = "获取下一个环节") + @PostMapping(value = "/getNextNodesForSubmit") + ResultBean getNextNodesForSubmit(@RequestBody BusinessVariables bv); + + @ApiOperation(value = "根据流程实例的id获取最新待办环节") + @PostMapping(value = "/获取上一个环节") + ResultBean getPreviousNodesForReject(@RequestBody BusinessVariables bv); + + @ApiOperation(value = "根据流程实例的id获取最新待办环节") + @PostMapping(value = "/getLatestTasks/{procId}") + ResultBean> getLatestTasks(@PathVariable(value = "procId") String procId); + +} \ No newline at end of file diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flowtask/FlowTaskVo.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flowtask/FlowTaskVo.java new file mode 100644 index 0000000000..bb4155d6ec --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flowtask/FlowTaskVo.java @@ -0,0 +1,53 @@ +package com.yxt.anrui.oa.feign.flowable.flowtask; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + *

流程任务

+ * + * @author XuanXuan + * @date 2021-04-03 + */ +@ApiModel("工作流任务相关--请求参数") +@Data +public class FlowTaskVo { + + @ApiModelProperty("任务Id") + private String taskId; + @ApiModelProperty("业务sid") + private String businessSid; + @ApiModelProperty("用户Id") + private String userId; + @ApiModelProperty("用户Sid") + private String userSid; + + @ApiModelProperty("任务意见") + private String comment; + + @ApiModelProperty("流程实例Id") + private String instanceId; + + @ApiModelProperty("节点") + private String targetKey; + + @ApiModelProperty("流程变量信息") + private Map values=new HashMap<>(); + + @ApiModelProperty("审批人") + private String assignee; + + @ApiModelProperty("候选人") + private List candidateUsers; + + @ApiModelProperty("审批组") + private List candidateGroups; + + + +} diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flowtask/LatestTaskVo.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flowtask/LatestTaskVo.java new file mode 100644 index 0000000000..a61302a2fe --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flowtask/LatestTaskVo.java @@ -0,0 +1,34 @@ +package com.yxt.anrui.oa.feign.flowable.flowtask; + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description + * @Author liuguohui + * @Date 2022/1/11 + */ +@ApiModel("最近环节") +@Data +public class LatestTaskVo implements Vo { + + @ApiModelProperty(value = "name_") + private String name_; + + @ApiModelProperty(value = "task_def_key_") + private String task_def_key_; + + @ApiModelProperty(value = "id_") + private String id_; + + @ApiModelProperty(value = "name_") + private String ASSIGNEE_; + + @ApiModelProperty(value = "orgPath") + private String orgPath; + + @ApiModelProperty(value = "incomingSourceRef") + private String incomingSourceRef; +} diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/message/MessageFeign.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/message/MessageFeign.java new file mode 100644 index 0000000000..0aaaee3c1d --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/message/MessageFeign.java @@ -0,0 +1,26 @@ +package com.yxt.anrui.oa.feign.message; + +import com.yxt.common.core.result.ResultBean; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +@Api(tags = "消息体") +@FeignClient( + contextId = "message-center-Message", + name = "message-center", + path = "v1/message") +public interface MessageFeign { + + /** + * 流程审批推送消息 + * + * @param query + * @return + */ + @ApiOperation("流程审批推送消息") + @PostMapping("/pushMessage") + ResultBean pushMessage(@RequestBody MessageFlowableQuery query); +} \ No newline at end of file diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/message/MessageFlowVo.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/message/MessageFlowVo.java new file mode 100644 index 0000000000..ef447f0c27 --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/message/MessageFlowVo.java @@ -0,0 +1,21 @@ +package com.yxt.anrui.oa.feign.message; + +import com.yxt.common.core.vo.Vo; +import lombok.Data; + +/** + * @Author dimengzhe + * @Date 2022/8/25 15:58 + * @Description + */ +@Data +public class MessageFlowVo implements Vo { + + private String sid; + private String procDefId; + private String nodeState; + private String procInsId; + private String taskDefKey; + private String taskId; + private String nextNodeUserSids; +} diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/message/MessageFlowableQuery.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/message/MessageFlowableQuery.java new file mode 100644 index 0000000000..29ee3b4f91 --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/message/MessageFlowableQuery.java @@ -0,0 +1,32 @@ +package com.yxt.anrui.oa.feign.message; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Map; + +/** + * @Author dimengzhe + * @Date 2022/8/25 15:12 + * @Description + */ +@Data +public class MessageFlowableQuery implements Query { + private static final long serialVersionUID = 3618558867479892211L; + @ApiModelProperty("业务sid") + private String businessSid; + @ApiModelProperty("模块名称") + private String moduleName; + @ApiModelProperty("消息内容") + private String msgContent; + @ApiModelProperty("消息标题") + private String msgTitle; + @ApiModelProperty("流程相关参数") + private MessageFlowVo ufVo; + @ApiModelProperty("app所需参数") + private Map appMap; + @ApiModelProperty("申请人") + private String applicationName; + +} diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/message/PushMessageQuery.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/message/PushMessageQuery.java new file mode 100644 index 0000000000..55c885d365 --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/message/PushMessageQuery.java @@ -0,0 +1,34 @@ +package com.yxt.anrui.oa.feign.message; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/8/10 + **/ +@Data +public class PushMessageQuery implements Query { + private static final long serialVersionUID = -5710109873182775336L; + + @ApiModelProperty("业务sid") + private String businessSid; + @ApiModelProperty("模块名称") + private String moduleName; + @ApiModelProperty("消息内容") + private String msgContent; + @ApiModelProperty("消息标题") + private String msgTitle; + @ApiModelProperty("接收人sidList") + private List receivedSids; + /* @ApiModelProperty("跳转地址") + private String msgTargetUri;*/ + @ApiModelProperty("0.内置Activity 1.内置WebView 2.RePlugin插件") + private String app_type; + @ApiModelProperty("插件sid") + private String moduleSid; +} diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/portal/dictcommon/DictCommon.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/portal/dictcommon/DictCommon.java new file mode 100644 index 0000000000..38b0002be6 --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/portal/dictcommon/DictCommon.java @@ -0,0 +1,25 @@ +package com.yxt.anrui.oa.feign.portal.dictcommon; + +import com.yxt.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author dimengzhe + * @date 2021/6/23 15:40 + * @description 数据字典数据项 + */ +@Data +public class DictCommon extends BaseEntity { + private static final long serialVersionUID = 8921237815183601526L; + @ApiModelProperty(value = "数据项值") + private String dictKey; + @ApiModelProperty(value = "数据类型") + private String dictType; + @ApiModelProperty(value = "数据项相对应的value值") + private String dictValue; + @ApiModelProperty(value = "数据项的父级sid") + private String parentSid; + @ApiModelProperty(value = "分组名称") + private String groupName; +} diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/portal/dictcommon/DictCommonFeign.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/portal/dictcommon/DictCommonFeign.java new file mode 100644 index 0000000000..7ac0d4f5ab --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/portal/dictcommon/DictCommonFeign.java @@ -0,0 +1,25 @@ +package com.yxt.anrui.oa.feign.portal.dictcommon; + +import com.yxt.common.core.result.ResultBean; +import io.swagger.annotations.ApiOperation; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @author dimengzhe + * @date 2021/7/5 21:59 + * @description + */ +@FeignClient( + contextId = "anrui-portal-DictCommon", + name = "anrui-portal", + path = "v1/dictcommons") +public interface DictCommonFeign { + + @GetMapping("/selectByType") + @ResponseBody + @ApiOperation("根据字典类型查询") + ResultBean> selectByType(@RequestParam("dictValue") String dictValue); +} diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/portal/sysorganization/SysOrganization.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/portal/sysorganization/SysOrganization.java new file mode 100644 index 0000000000..978b15c0e9 --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/portal/sysorganization/SysOrganization.java @@ -0,0 +1,92 @@ +package com.yxt.anrui.oa.feign.portal.sysorganization; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.yxt.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysOrganization.java
+ * Class: com.yxt.anrui.portal.api.sysorganization.SysOrganization
+ * Description: 组织机构表.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:28
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "组织机构表", description = "组织机构表") +@TableName("sys_organization") +@Data +public class SysOrganization extends BaseEntity { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty("部门/组织名称") + private String name; + + @ApiModelProperty("父(部门/组织) sid") + private String psid; + + @ApiModelProperty("联系电话") + private String linkPhone; + @ApiModelProperty("联系人") + private String linkPerson; + + @ApiModelProperty("部门sid全路径") + private String orgSidPath; + + @ApiModelProperty("排序") + private Integer sort; + + @ApiModelProperty("地址") + private String addrs; + + @ApiModelProperty("地理位置经纬度") + private String jwd; + + @ApiModelProperty("二维码") + private String qrText; + + @ApiModelProperty("限制本部门成员查看通讯录:限制开启后,本部门成员只能看到限定范围内的通讯录不能看到所有通讯录,仅可见自己") + private Integer limitOrgMember; + + @ApiModelProperty("部门编码") + private String orgCode; + + @ApiModelProperty("部门简称(地区简称+门店名称首字母(遇到首字母重复时用2个字母))") + private String orgShortName; + + @ApiModelProperty("销售区域划分(本店终端销售:0,门店对应业务区域划分销售:1至9,具体编号划分各门店报备确定)") + private String regionDivision; + + @ApiModelProperty("是否是部门(0否,1是)") + private Integer isDept; + + @ApiModelProperty("组织简称") + private String orgAbbre; + + @ApiModelProperty("组织属性key") + private String orgAttributeKey; + + @ApiModelProperty("组织属性value") + private String orgAttributeValue; + + @ApiModelProperty("管理层级key") + private String orgLevelKey; + + @ApiModelProperty("管理层级value") + private String orgLevelValue; + + @ApiModelProperty("其他编码") + private String otherCode; + + @ApiModelProperty("主管人员sid") + private String managerSid; + @ApiModelProperty("主管人员姓名") + private String managerName; +} diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/portal/sysorganization/SysOrganizationFeign.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/portal/sysorganization/SysOrganizationFeign.java new file mode 100644 index 0000000000..3ea5f67f32 --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/portal/sysorganization/SysOrganizationFeign.java @@ -0,0 +1,35 @@ +package com.yxt.anrui.oa.feign.portal.sysorganization; + +import com.yxt.common.core.result.ResultBean; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysOrganizationFeign.java
+ * Class: com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign
+ * Description: 组织机构表.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:28
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Api(tags = "组织机构表") +@FeignClient( + contextId = "anrui-portal-SysOrganization", + name = "anrui-portal", + path = "v1/sysorganization") +public interface SysOrganizationFeign { + + @ApiOperation("获取一条记录 根据sid") + @ResponseBody + @GetMapping("/fetchBySid/{sid}") + public ResultBean fetchBySid(@PathVariable("sid") String sid); +} \ No newline at end of file diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/portal/sysorganization/SysOrganizationVo.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/portal/sysorganization/SysOrganizationVo.java new file mode 100644 index 0000000000..e57f5d0340 --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/portal/sysorganization/SysOrganizationVo.java @@ -0,0 +1,88 @@ +package com.yxt.anrui.oa.feign.portal.sysorganization; + + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysOrganizationVo.java
+ * Class: com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo
+ * Description: 组织机构表 视图数据对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:28
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "组织机构表 视图数据对象", description = "组织机构表 视图数据对象") +@Data +public class SysOrganizationVo implements Vo { + @ApiModelProperty("部门/组织名称") + private String name; + + @ApiModelProperty("父(部门/组织) sid") + private String psid; + + @ApiModelProperty("联系电话") + private String linkPhone; + + @ApiModelProperty("联系人") + private String linkPerson; + + @ApiModelProperty("部门sid全路径") + private String orgSidPath; + + @ApiModelProperty("排序") + private Integer sort; + + @ApiModelProperty("地址") + private String addrs; + + @ApiModelProperty("地理位置经纬度") + private String jwd; + + @ApiModelProperty("二维码") + private String qrText; + + @ApiModelProperty("限制本部门成员查看通讯录:限制开启后,本部门成员只能看到限定范围内的通讯录不能看到所有通讯录,仅可见自己") + private Integer limitOrgMember; + + @ApiModelProperty("部门编码") + private String orgCode; + @ApiModelProperty("sid") + private String sid; + @ApiModelProperty("子集") + private List children = new ArrayList<>(); + @ApiModelProperty("主管人员名称") + private String zgNames; + @ApiModelProperty("分管人员名称") + private String fgNames; + @ApiModelProperty("主管人员sid") + private String zgStaffSid; + @ApiModelProperty("分管人员sid") + private String fgStaffSid; + @ApiModelProperty("组织简称") + private String orgAbbre; + @ApiModelProperty("是否是部门(0否,1是)") + private Integer isDept; + @ApiModelProperty("组织属性key") + private String orgAttributeKey; + @ApiModelProperty("组织属性value") + private String orgAttributeValue; + @ApiModelProperty("管理层级key") + private String orgLevelKey; + @ApiModelProperty("管理层级value") + private String orgLevelValue; + @ApiModelProperty("其他编码") + private String otherCode; + @ApiModelProperty("主管用户sid") + private String managerSid; +} diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/portal/sysstafforg/SysStaffOrgFeign.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/portal/sysstafforg/SysStaffOrgFeign.java new file mode 100644 index 0000000000..4684cc445b --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/portal/sysstafforg/SysStaffOrgFeign.java @@ -0,0 +1,25 @@ +package com.yxt.anrui.oa.feign.portal.sysstafforg; + +import com.yxt.common.core.result.ResultBean; +import io.swagger.annotations.ApiOperation; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * @description: 人员与机构 + * @author: dimengzhe + * @date: 2024/3/6 + **/ +@FeignClient( + contextId = "anrui-portal-SysStaffOrg", + name = "anrui-portal", + path = "v1/sysstafforg") +public interface SysStaffOrgFeign { + + @GetMapping("/getOrgSidByPath") + @ResponseBody + @ApiOperation("根据用户组织全路径获取用户的分公司sid") + ResultBean getOrgSidByPath(@RequestParam("orgPath") String orgPath); +} diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/portal/sysuserrole/SysUserRoleFeign.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/portal/sysuserrole/SysUserRoleFeign.java new file mode 100644 index 0000000000..188ae9d1ab --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/portal/sysuserrole/SysUserRoleFeign.java @@ -0,0 +1,22 @@ +package com.yxt.anrui.oa.feign.portal.sysuserrole; + +import com.yxt.common.core.result.ResultBean; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; + +import java.util.List; + +@Api(tags = "用户与角色关联表") +@FeignClient( + contextId = "anrui-portal-SysUserRole", + name = "anrui-portal", + path = "v1/sysuserrole") +public interface SysUserRoleFeign { + + @ApiOperation("根据用户sid查询用户角色sid列表") + @GetMapping("/getUserRoleSidByUserSid/{userSid}") + public ResultBean> getUserRoleSidByUserSid(@PathVariable("userSid") String userSid); +} \ No newline at end of file diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/privilege/PrivilegeQuery.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/privilege/PrivilegeQuery.java new file mode 100644 index 0000000000..4250fd93a7 --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/privilege/PrivilegeQuery.java @@ -0,0 +1,22 @@ +package com.yxt.anrui.oa.feign.privilege; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: 权限角色层级 + * @author: dimengzhe + * @date: 2023/5/23 + **/ +@Data +public class PrivilegeQuery { + + @ApiModelProperty("菜单路由") + private String menuUrl; + @ApiModelProperty("组织全路径sid") + private String orgPath; + @ApiModelProperty("菜单sid") + private String menuSid; + @ApiModelProperty("用户sid") + private String userSid; +} diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/sysuser/OrgList.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/sysuser/OrgList.java new file mode 100644 index 0000000000..255f1b6778 --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/sysuser/OrgList.java @@ -0,0 +1,21 @@ +package com.yxt.anrui.oa.feign.sysuser; + +import com.yxt.common.core.vo.Vo; +import lombok.Data; + +/** + * @Author dimengzhe + * @Date 2022/9/21 9:26 + * @Description + */ +@Data +public class OrgList implements Vo { + private static final long serialVersionUID = -2867882982421321776L; + + private String orgName; + private String orgPath; + + private String deptName; + + private String deptSid; +} diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/sysuser/SysUserFeign.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/sysuser/SysUserFeign.java new file mode 100644 index 0000000000..1fbf4876c1 --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/sysuser/SysUserFeign.java @@ -0,0 +1,27 @@ +package com.yxt.anrui.oa.feign.sysuser; + +import com.yxt.anrui.oa.feign.privilege.PrivilegeQuery; +import com.yxt.common.core.result.ResultBean; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +@Api(tags = "用户表") +@FeignClient( + contextId = "anrui-portal-SysUser", + name = "anrui-portal", + path = "v1/sysuser") +public interface SysUserFeign { + + @ApiOperation(value = "查询角色权限的层级获取权限id") + @PostMapping(value = "/selectPrivilegeLevel") + ResultBean selectPrivilegeLevel(@RequestBody PrivilegeQuery query); + + @ApiOperation("根据sid获取一条记录") + @GetMapping("/fetchBySid/{sid}") + public ResultBean fetchBySid(@PathVariable("sid") String sid); +} diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/sysuser/SysUserVo.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/sysuser/SysUserVo.java new file mode 100644 index 0000000000..cebdfabd18 --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/sysuser/SysUserVo.java @@ -0,0 +1,97 @@ +package com.yxt.anrui.oa.feign.sysuser; + + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; + +/** + * Project: anrui_portal(门户建设)
+ * File: SysUserVo.java
+ * Class: com.yxt.anrui.portal.api.sysuser.SysUserVo
+ * Description: 用户表 视图数据对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2021-08-03 00:24:30
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@ApiModel(value = "用户表 视图数据对象", description = "用户表 视图数据对象") +@Data +@NoArgsConstructor +public class SysUserVo implements Vo { + private static final long serialVersionUID = 2415131854581950721L; + @ApiModelProperty("部门sid") + private String departmentSid; + @ApiModelProperty("部门名称") + private String departmentName; + @ApiModelProperty("上级部门名称-本级部门名称 岗位名称") + @JsonProperty("pNameAndDepartmentNameAndPostName") + private String pNameAndDepartmentNameAndPostName; + @ApiModelProperty("岗位名称") + private String postName; + @ApiModelProperty("岗位Sid") + private String postSid; + @ApiModelProperty("单位sid") + private String organizationSid; + @ApiModelProperty("单位名称") + private String organizationName; + @ApiModelProperty("用户姓名") + private String name; + @ApiModelProperty("登录名,登录名不能相同") + private String userName; + + @ApiModelProperty("id") + private Integer id; + @ApiModelProperty("用户sid") + private String sid; + @ApiModelProperty("是否是管理员:1管理员,2一般用户,0是超级管理员,3尚无单位人员") + private String isAdmin; + @ApiModelProperty("角色名称") + private String roleName; + + @ApiModelProperty("关联的人员sid") + private String staffSid; + + @ApiModelProperty("手机号") + private String mobile; + @ApiModelProperty(value = "禁用状态") + private String isEnable; + + @ApiModelProperty("用户类型:1员工、2客户、3供应商") + private String userType; + @ApiModelProperty("用户类型:1、2、3") + private String userTypeKey; + @ApiModelProperty("用户头像") + private String headImage; + @ApiModelProperty("组织名称") + private String orgNamePath; + @ApiModelProperty("组织sid") + private String orgSidPath; + @ApiModelProperty(value = "token") + private String token; + @ApiModelProperty(value = "角色sids") + private List roleSids = new ArrayList<>(); + + private List orgList = new ArrayList<>(); + @ApiModelProperty("默认的组织机构sid全路径") + private String defaultOrgPath; + @ApiModelProperty("默认的组织机构名称全路径") + private String defaultOrgPathName; + + private String defaultDeptName; + private String defaultDeptSid; + + @ApiModelProperty("是否需要更换密码") + private Boolean needResetPsd; + @ApiModelProperty("工号") + private String jobNumber; +} diff --git a/yxt-oa/src/main/resources/application-devv.yml b/yxt-oa/src/main/resources/application-devv.yml new file mode 100644 index 0000000000..38ce6aee4b --- /dev/null +++ b/yxt-oa/src/main/resources/application-devv.yml @@ -0,0 +1,33 @@ +spring: + datasource: + driver-class-name: com.mysql.cj.jdbc.Driver + # url: jdbc:mysql://127.0.0.1:3306/yxt_oa?serverTimezone=GMT%2B8&autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&nullCatalogMeansCurrent=true + url: jdbc:mysql://39.104.100.138:3306/yxt_oa?serverTimezone=GMT%2B8&autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&nullCatalogMeansCurrent=true + username: root + # password: root + password: yxt_mysql_138 + cloud: + nacos: + discovery: + server-addr: 127.0.0.1:8848 + redis: + database: 3 # Redis数据库索引(默认为0) + host: 127.0.0.1 + jedis: + pool: + max-active: -1 #连接池最大连接数(使用负值表示没有限制) + max-idle: 8 #连接池中的最大空闲连接 + max-wait: -1 # 连接池最大阻塞等待时间(使用负值表示没有限制) + min-idle: 0 # 连接池中的最小空闲连接 + password: 123456 + port: 6379 + timeout: 0 # 连接超时时间(毫秒) + +image: + upload: + path: D:\\anrui\\upload\\ + url: + prefix: http://192.168.0.120:8111/upload/ +templateUrl: + uploadUrl: D:\anrui\upload\template\ + prefixUrl: http://192.168.0.127/api/upload/template/ \ No newline at end of file diff --git a/yxt-oa/src/main/resources/application-pro.yml b/yxt-oa/src/main/resources/application-pro.yml new file mode 100644 index 0000000000..1b40a9ee92 --- /dev/null +++ b/yxt-oa/src/main/resources/application-pro.yml @@ -0,0 +1,28 @@ +spring: + datasource: + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://120.46.172.184:3306/yxt_oa?serverTimezone=GMT%2B8&autoReconnect=true&useUnicode=true&characterEncoding=UTF-8 + username: root + password: '@anrui18033887500' + cloud: + nacos: + discovery: + server-addr: 127.0.0.1:8848 + redis: + database: 3 # Redis数据库索引(默认为0) + host: 127.0.0.1 + jedis: + pool: + max-active: -1 #连接池最大连接数(使用负值表示没有限制) + max-idle: 8 #连接池中的最大空闲连接 + max-wait: -1 # 连接池最大阻塞等待时间(使用负值表示没有限制) + min-idle: 0 # 连接池中的最小空闲连接 + password: 123456 + port: 6379 + timeout: 0 # 连接超时时间(毫秒) + +image: + upload: + path: D:\anrui\upload\ + url: + prefix: http://120.46.172.184/api/upload/ diff --git a/yxt-oa/src/main/resources/application-test.yml b/yxt-oa/src/main/resources/application-test.yml new file mode 100644 index 0000000000..da77ddb8de --- /dev/null +++ b/yxt-oa/src/main/resources/application-test.yml @@ -0,0 +1,31 @@ +spring: + datasource: + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://172.18.0.4:3306/yxt_oa?serverTimezone=GMT%2B8&autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true + username: root + password: yxt_mysql_138 + hikari: + minimum-idle: 3 + max-lifetime: 30000 + maximum-pool-size: 10 + cloud: + nacos: + discovery: + server-addr: 127.0.0.1:8848 + redis: + database: 3 # Redis数据库索引(默认为0) + host: 127.0.0.1 + jedis: + pool: + max-active: -1 #连接池最大连接数(使用负值表示没有限制) + max-idle: 8 #连接池中的最大空闲连接 + max-wait: -1 # 连接池最大阻塞等待时间(使用负值表示没有限制) + min-idle: 0 # 连接池中的最小空闲连接 + password: 123456 + port: 6379 + timeout: 0 # 连接超时时间(毫秒) +image: + upload: + path: /home/lzh/docker_data/nginx/html/anrui-system-ui/upload/ + url: + prefix: http://anrui.yyundong.com/upload/ diff --git a/yxt-oa/src/main/resources/application.yml b/yxt-oa/src/main/resources/application.yml new file mode 100644 index 0000000000..c6b3534620 --- /dev/null +++ b/yxt-oa/src/main/resources/application.yml @@ -0,0 +1,62 @@ +spring: + application: + name: yxt-oa + profiles: + active: devv + messages: + # 国际化资源文件路径 + basename: i18n/messages + servlet: + #上传文件 + multipart: + max-file-size: 50MB + max-request-size: 100MB + devtools: + restart: + # 热部署开关 + enabled: true + mvc: + async: + request-timeout: 20000 + + + +server: + port: 7308 + max-http-header-size: 102400 + tomcat: + max-http-form-post-size: -1 +#mybatis +mybatis-plus: + # 配置mapper的扫描,找到所有的mapper.xml映射文件 + mapper-locations: classpath*:**Mapper.xml + global-config: + refresh: true + db-config: + #定义生成ID的类型 + id-type: Auto + db-type: mysql + configuration: + map-underscore-to-camel-case: false + cache-enabled: true + call-setters-on-nulls: true + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + +#hystrix的超时时间 +hystrix: + command: + default: + execution: + timeout: + enabled: true + isolation: + thread: + timeoutInMilliseconds: 60000 +#ribbon的超时时间 +ribbon: + ReadTimeout: 60000 + ConnectTimeout: 60000 + + + + diff --git a/yxt-oa/src/main/resources/banner.txt b/yxt-oa/src/main/resources/banner.txt new file mode 100644 index 0000000000..98e44c5880 --- /dev/null +++ b/yxt-oa/src/main/resources/banner.txt @@ -0,0 +1,13 @@ + ,----.. ____ + / / \ ,' , `. +| : : ,---. ,-+-,.' _ | ,---. ,---, +. | ;. / ' ,'\ ,-+-. ; , || ' ,'\ ,-+-. / | +. ; /--` / / | ,--.'|' | || ,---. / / | ,--.'|' | +; | ; . ; ,. :| | ,', | |,/ \ . ; ,. :| | ,"' | +| : | ' | |: :| | / | |--'/ / | ' | |: :| | / | | +. | '___' | .; :| : | | , . ' / | ' | .; :| | | | | +' ; : .'| : || : | |/ ' ; /| | : || | | |/ +' | '/ :\ \ / | | |`-' ' | / | \ \ / | | |--' +| : / `----' | ;/ | : | `----' | |/ + \ \ .' '---' \ \ / '---' + `---` `----' diff --git a/yxt-oa/src/main/resources/logback-spring.xml b/yxt-oa/src/main/resources/logback-spring.xml new file mode 100644 index 0000000000..d74a0b15a3 --- /dev/null +++ b/yxt-oa/src/main/resources/logback-spring.xml @@ -0,0 +1,50 @@ + + + + + + + + + + %yellow(%date{yyyy-MM-dd HH:mm:ss}) |%highlight(%-5level) |%green(%logger:%line) |%blue(%msg%n) + + + + + + + + + + + + + + + ${log.base}.log + + ${log.base}.%d{yyyyMMdd}.%i.log.zip + + + + 1MB + + + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} + -%msg%n + + + + + + + + + + \ No newline at end of file diff --git a/yxt-vehfleet/src/main/java/com/yxt/anrui/vehfleet/VehfleetApplication.java b/yxt-vehfleet/src/main/java/com/yxt/anrui/oa/VehfleetApplication.java similarity index 90% rename from yxt-vehfleet/src/main/java/com/yxt/anrui/vehfleet/VehfleetApplication.java rename to yxt-vehfleet/src/main/java/com/yxt/anrui/oa/VehfleetApplication.java index 1d0b07b5cb..86ed4f7118 100644 --- a/yxt-vehfleet/src/main/java/com/yxt/anrui/vehfleet/VehfleetApplication.java +++ b/yxt-vehfleet/src/main/java/com/yxt/anrui/oa/VehfleetApplication.java @@ -1,4 +1,4 @@ -package com.yxt.anrui.vehfleet; +package com.yxt.anrui.oa; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @@ -11,7 +11,7 @@ import org.springframework.cloud.openfeign.EnableFeignClients; @EnableDiscoveryClient @SpringBootApplication(scanBasePackages = { "com.yxt.common.base.config", - "com.yxt.anrui.vehfleet" + "com.yxt.anrui.oa" }) @EnableFeignClients(basePackages = {"com.yxt.*.*"}) public class VehfleetApplication {