Browse Source

更改

master
ligaode 5 months ago
parent
commit
ac4e06edf7
  1. 5
      anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/dictcommon/DictCommonFeign.java
  2. 5
      anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/dictcommon/DictCommonFeignFallback.java
  3. 7
      anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/dictcommon/DictCommonRest.java
  4. 87
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/oa/leaveapply/AppLeaveApplyDetailsVo.java
  5. 99
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/oa/leaveapply/AppLeaveApplyDto.java
  6. 73
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/oa/leaveapply/AppLeaveApplyFeign.java
  7. 91
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/oa/leaveapply/AppLeaveApplyInitVo.java
  8. 11
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/oa/leaveapply/AppLeaveType.java
  9. 25
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/oa/leaveapply/flowable/AppDelegateQuery.java
  10. 37
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/oa/leaveapply/flowable/AppFlowDto.java
  11. 28
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/oa/leaveapply/flowable/AppFlowQuery.java
  12. 47
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/oa/leaveapply/flowable/AppFlowTaskQuery.java
  13. 24
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/oa/leaveapply/flowable/SubmitAppLeaveApplyDto.java
  14. 45
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/supplychain/specialrebatecheckapply/AppSpecialRebateDetailsVo.java
  15. 4
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/supplychain/specialrebatecheckapply/AppSpecialrebateCheckapplyFeign.java
  16. 2
      anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/TerminalApplication.java
  17. 93
      anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/oa/leaveapply/AppLeaveApplyRest.java
  18. 187
      anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/oa/leaveapply/AppLeaveApplyService.java
  19. 5
      anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/supplychain/specialrebatecheckapply/AppSpecialrebateCheckapplyRest.java
  20. 14
      anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/supplychain/specialrebatecheckapply/AppSpecialrebateCheckapplyService.java
  21. 97
      anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/oaleaveapply/OaLeaveApplyDetailsVo.java
  22. 101
      anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/oaleaveapply/OaLeaveApplyDto.java
  23. 72
      anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/oaleaveapply/OaLeaveApplyFeign.java
  24. 101
      anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/oaleaveapply/OaLeaveApplyInitVo.java
  25. 11
      anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/oaleaveapply/OaLeaveType.java
  26. 37
      anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/oaleaveapply/flowable/OaLeaveApplyCompleteDto.java
  27. 26
      anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/oaleaveapply/flowable/OaLeaveApplyDelegateQuery.java
  28. 25
      anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/oaleaveapply/flowable/OaLeaveApplyNodeQuery.java
  29. 26
      anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/oaleaveapply/flowable/OaLeaveApplyNodeVo.java
  30. 48
      anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/oaleaveapply/flowable/OaLeaveApplyTaskQuery.java
  31. 24
      anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/oaleaveapply/flowable/SubmitOaLeaveApplyDto.java
  32. 2
      yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/AsBusrepairBill.java
  33. 16
      yxt-as/src/main/java/com/yxt/anrui/as/biz/asarrearsoutapply/AsArrearsoutApplyService.java
  34. 8
      yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusclaiminvoicebill/AsBusclaimInvoiceBillService.java
  35. 92
      yxt-oa/pom.xml
  36. 21
      yxt-oa/src/main/java/com/yxt/anrui/oa/OaApplication.java
  37. 146
      yxt-oa/src/main/java/com/yxt/anrui/oa/api/OaLeaveApplyRest.java
  38. 53
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaappendix/OaAppendix.java
  39. 52
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaappendix/OaAppendixDetailsVo.java
  40. 52
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaappendix/OaAppendixDto.java
  41. 39
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaappendix/OaAppendixMapper.java
  42. 6
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaappendix/OaAppendixMapper.xml
  43. 39
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaappendix/OaAppendixService.java
  44. 95
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/OaLeaveApply.java
  45. 101
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/OaLeaveApplyDetailsVo.java
  46. 103
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/OaLeaveApplyDto.java
  47. 103
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/OaLeaveApplyInitVo.java
  48. 59
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/OaLeaveApplyMapper.java
  49. 42
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/OaLeaveApplyMapper.xml
  50. 93
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/OaLeaveApplyQuery.java
  51. 628
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/OaLeaveApplyService.java
  52. 94
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/OaLeaveApplyVo.java
  53. 11
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/OaLeaveType.java
  54. 37
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/flowable/OaLeaveApplyCompleteDto.java
  55. 26
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/flowable/OaLeaveApplyDelegateQuery.java
  56. 25
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/flowable/OaLeaveApplyNodeQuery.java
  57. 26
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/flowable/OaLeaveApplyNodeVo.java
  58. 48
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/flowable/OaLeaveApplyTaskQuery.java
  59. 24
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/flowable/SubmitOaLeaveApplyDto.java
  60. 24
      yxt-oa/src/main/java/com/yxt/anrui/oa/feign/base/BillNo.java
  61. 44
      yxt-oa/src/main/java/com/yxt/anrui/oa/feign/base/Rule.java
  62. 38
      yxt-oa/src/main/java/com/yxt/anrui/oa/feign/file/OaFileEnum.java
  63. 65
      yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flow/BusinessVariables.java
  64. 20
      yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flow/FlowProcessMapQuery.java
  65. 38
      yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flow/FlowableFeign.java
  66. 38
      yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flow/ProcDefEnum.java
  67. 68
      yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flow/UpdateFlowFieldVo.java
  68. 23
      yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flow2/FlowDelegateQuery.java
  69. 36
      yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flow2/FlowFeign.java
  70. 31
      yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flowtask/FlowTaskFeign.java
  71. 53
      yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flowtask/FlowTaskVo.java
  72. 34
      yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flowtask/LatestTaskVo.java
  73. 26
      yxt-oa/src/main/java/com/yxt/anrui/oa/feign/message/MessageFeign.java
  74. 21
      yxt-oa/src/main/java/com/yxt/anrui/oa/feign/message/MessageFlowVo.java
  75. 32
      yxt-oa/src/main/java/com/yxt/anrui/oa/feign/message/MessageFlowableQuery.java
  76. 34
      yxt-oa/src/main/java/com/yxt/anrui/oa/feign/message/PushMessageQuery.java
  77. 25
      yxt-oa/src/main/java/com/yxt/anrui/oa/feign/portal/dictcommon/DictCommon.java
  78. 25
      yxt-oa/src/main/java/com/yxt/anrui/oa/feign/portal/dictcommon/DictCommonFeign.java
  79. 92
      yxt-oa/src/main/java/com/yxt/anrui/oa/feign/portal/sysorganization/SysOrganization.java
  80. 35
      yxt-oa/src/main/java/com/yxt/anrui/oa/feign/portal/sysorganization/SysOrganizationFeign.java
  81. 88
      yxt-oa/src/main/java/com/yxt/anrui/oa/feign/portal/sysorganization/SysOrganizationVo.java
  82. 25
      yxt-oa/src/main/java/com/yxt/anrui/oa/feign/portal/sysstafforg/SysStaffOrgFeign.java
  83. 22
      yxt-oa/src/main/java/com/yxt/anrui/oa/feign/portal/sysuserrole/SysUserRoleFeign.java
  84. 22
      yxt-oa/src/main/java/com/yxt/anrui/oa/feign/privilege/PrivilegeQuery.java
  85. 21
      yxt-oa/src/main/java/com/yxt/anrui/oa/feign/sysuser/OrgList.java
  86. 27
      yxt-oa/src/main/java/com/yxt/anrui/oa/feign/sysuser/SysUserFeign.java
  87. 97
      yxt-oa/src/main/java/com/yxt/anrui/oa/feign/sysuser/SysUserVo.java
  88. 33
      yxt-oa/src/main/resources/application-devv.yml
  89. 28
      yxt-oa/src/main/resources/application-pro.yml
  90. 31
      yxt-oa/src/main/resources/application-test.yml
  91. 62
      yxt-oa/src/main/resources/application.yml
  92. 13
      yxt-oa/src/main/resources/banner.txt
  93. 50
      yxt-oa/src/main/resources/logback-spring.xml
  94. 4
      yxt-vehfleet/src/main/java/com/yxt/anrui/oa/VehfleetApplication.java

5
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<String> selectByValue(@RequestParam("dictValue") String dictValue);
@GetMapping("/selectByType")
@ResponseBody
@ApiOperation("根据字典类型查询")
ResultBean<List<DictCommon>> selectByType(@RequestParam("dictValue") String dictValue);
}

5
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<String> selectByValue(String dictValue) {
return null;
}
@Override
public ResultBean<List<DictCommon>> selectByType(String dictValue) {
return null;
}
}

7
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<List<DictCommon>> selectByType(String dictValue) {
ResultBean rb = ResultBean.fireFail();
List<DictCommon> dictCommons = dictCommonService.selectByType(dictValue);
return rb.success().setData(dictCommons);
}
}

87
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(请假申请) <br/>
* File: OaLeaveApplyVo.java <br/>
* Class: com.yxt.anrui.oa.api.oaleaveapply.OaLeaveApplyVo <br/>
* Description: 请假申请 视图数据对象. <br/>
* Copyright: Copyright (c) 2011 <br/>
* Company: https://gitee.com/liuzp315 <br/>
* Makedate: 2024-11-28 15:24:37 <br/>
*
* @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<String> 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
}

99
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(请假申请) <br/>
* File: OaLeaveApplyDto.java <br/>
* Class: com.yxt.anrui.oa.api.oaleaveapply.OaLeaveApplyDto <br/>
* Description: 请假申请 数据传输对象. <br/>
* Copyright: Copyright (c) 2011 <br/>
* Company: https://gitee.com/liuzp315 <br/>
* Makedate: 2024-11-28 15:24:37 <br/>
*
* @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<String> files = new ArrayList<>();
}

73
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<AppLeaveApplyDetailsVo> fetchDetailsBySid(@RequestParam("sid") String sid);
@ApiOperation("初始化")
@GetMapping("/init")
public ResultBean<AppLeaveApplyInitVo> 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<String> 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);
}

91
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(请假申请) <br/>
* File: OaLeaveApplyVo.java <br/>
* Class: com.yxt.anrui.oa.api.oaleaveapply.OaLeaveApplyVo <br/>
* Description: 请假申请 视图数据对象. <br/>
* Copyright: Copyright (c) 2011 <br/>
* Company: https://gitee.com/liuzp315 <br/>
* Makedate: 2024-11-28 15:24:37 <br/>
*
* @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<AppLeaveType> 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<String> 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
}

11
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; //额外追加字符串
}

25
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;
}

37
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;
}

28
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;
}

47
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;
}

24
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;
}

45
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;
}

4
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<List<AppSpecialRebateDetailsVo>> specialRebateCheckDetails(@PathVariable("sid") String sid);
@ApiOperation("明细-详情")
@GetMapping("/scmspecialrebateDetail/{sid}")
public ResultBean<AppSpecialRebateDetailsVo> scmspecialrebateDetail(@PathVariable("sid") String sid);
/**********************************************流程********************************************/
@ApiOperation("办理")

2
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) {

93
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<AppLeaveApplyDetailsVo> fetchDetailsBySid(String sid) {
return appLeaveApplyService.fetchDetailsBySid(sid);
}
@Override
public ResultBean<AppLeaveApplyInitVo> 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<String> 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);
}
}

187
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<AppLeaveApplyDetailsVo> 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<AppLeaveApplyInitVo> 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<SysUserVo> userVoResultBean = sysUserFeign.fetchBySid(dto.getUserSid());
if (!userVoResultBean.getSuccess()) {
return rb.setMsg(userVoResultBean.getMsg());
}
//根据staffSid获取用户的组织全路径
ResultBean<SysStaffOrg> 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<String> getFlowOperateTitle(AppFlowQuery query) {
ResultBean<String> rb = ResultBean.fireFail();
//0 上一环节 1下一环节
int next = query.getNext();
OaLeaveApplyNodeQuery getNodeQuery = new OaLeaveApplyNodeQuery();
BeanUtil.copyProperties(query, getNodeQuery);
String data = "";
if (next == 0) {
ResultBean<List<OaLeaveApplyNodeVo>> 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<List<OaLeaveApplyNodeVo>> 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();
}
}

5
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<AppSpecialRebateDetailsVo> scmspecialrebateDetail(String sid) {
return appSpecialrebateCheckapplyService.scmspecialrebateDetail(sid);
}
@Override
public ResultBean agreeCreditInfo(AppFlowDto dto) {
return appSpecialrebateCheckapplyService.agreeCreditInfo(dto);

14
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<AppSpecialrebateCheckapplyDetailsVo> 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<AppSpecialRebateDetailsVo> 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

97
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(请假申请) <br/>
* File: OaLeaveApplyVo.java <br/>
* Class: com.yxt.anrui.oa.api.oaleaveapply.OaLeaveApplyVo <br/>
* Description: 请假申请 视图数据对象. <br/>
* Copyright: Copyright (c) 2011 <br/>
* Company: https://gitee.com/liuzp315 <br/>
* Makedate: 2024-11-28 15:24:37 <br/>
*
* @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<String> files = new ArrayList<>();
}

101
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(请假申请) <br/>
* File: OaLeaveApplyDto.java <br/>
* Class: com.yxt.anrui.oa.api.oaleaveapply.OaLeaveApplyDto <br/>
* Description: 请假申请 数据传输对象. <br/>
* Copyright: Copyright (c) 2011 <br/>
* Company: https://gitee.com/liuzp315 <br/>
* Makedate: 2024-11-28 15:24:37 <br/>
*
* @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<OaLeaveType> 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<String> files = new ArrayList<>();
}

72
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<OaLeaveApplyDetailsVo> fetchDetailsBySid(@PathVariable("sid") String sid);
@ApiOperation("初始化")
@GetMapping("/init")
public ResultBean<OaLeaveApplyInitVo> 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<List<OaLeaveApplyNodeVo>> getPreviousNodesForReject(@Valid @SpringQueryMap OaLeaveApplyNodeQuery query);
@ApiOperation(value = "获取下一个环节")
@GetMapping(value = "/getNextNodesForSubmit")
public ResultBean<List<OaLeaveApplyNodeVo>> 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);
}

101
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(请假申请) <br/>
* File: OaLeaveApplyVo.java <br/>
* Class: com.yxt.anrui.oa.api.oaleaveapply.OaLeaveApplyVo <br/>
* Description: 请假申请 视图数据对象. <br/>
* Copyright: Copyright (c) 2011 <br/>
* Company: https://gitee.com/liuzp315 <br/>
* Makedate: 2024-11-28 15:24:37 <br/>
*
* @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<OaLeaveType> 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<String> files = new ArrayList<>();
}

11
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; //额外追加字符串
}

37
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;
}

26
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;
}

25
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;
}

26
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<String> candidateGroups;
@ApiModelProperty(value = "是否是最后环节")
private String endTask;
}

48
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;
}

24
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;
}

2
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;
}

16
yxt-as/src/main/java/com/yxt/anrui/as/biz/asarrearsoutapply/AsArrearsoutApplyService.java

@ -244,20 +244,10 @@ public class AsArrearsoutApplyService extends MybatisBaseService<AsArrearsoutApp
asArrearsoutApplyDetailsVo.setUseOrgName(asBusrepairBill.getUseOrgName());
asArrearsoutApplyDetailsVo.setBillTypeKey(asBusrepairBill.getBillTypeKey());
asArrearsoutApplyDetailsVo.setBillTypeValue(asBusrepairBill.getBillType());
FmsReceivesettle fmsReceivesettle = fmsReceivesettleFeign.fetchBySourceSid(gdSid).getData();
if (fmsReceivesettle == null){
return rb.setMsg("请先进行结算");
}
BigDecimal pairReceivedMoney;
if (StringUtils.isNotBlank(fmsReceivesettle.getOtherSettleAmount())){
pairReceivedMoney = fmsReceivesettle.getSettleAmount().add(new BigDecimal(fmsReceivesettle.getOtherSettleAmount()));
}else {
pairReceivedMoney = fmsReceivesettle.getSettleAmount();
}
asArrearsoutApplyDetailsVo.setPairReceivedMoney(pairReceivedMoney);
asArrearsoutApplyDetailsVo.setPairReceivedMoney(asBusrepairBill.getSettleAmount());
asArrearsoutApplyDetailsVo.setPairReceivableMoney(asBusrepairBill.getReceivableAmount());
asArrearsoutApplyDetailsVo.setPairArrearsMoney(asBusrepairBill.getReceivableAmount().subtract(pairReceivedMoney));
asArrearsoutApplyDetailsVo.setBalanceDate(fmsReceivesettle.getSettleTime());
asArrearsoutApplyDetailsVo.setPairArrearsMoney(asBusrepairBill.getReceivableAmount().subtract(asBusrepairBill.getSettleAmount()));
asArrearsoutApplyDetailsVo.setBalanceDate(DateUtil.parseDate(asBusrepairBill.getSettleTime()));
return rb.success().setData(asArrearsoutApplyDetailsVo);
}

8
yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusclaiminvoicebill/AsBusclaimInvoiceBillService.java

@ -741,7 +741,6 @@ public class AsBusclaimInvoiceBillService extends MybatisBaseService<AsBusclaimI
default:
break;
}
} else {
continue;
}
@ -776,12 +775,9 @@ public class AsBusclaimInvoiceBillService extends MybatisBaseService<AsBusclaimI
}
continue;
}
}
}
importVoList.add(excelInfoVo);
}
if (!importVoList.isEmpty()) {
for (ExcelInfoVo excelInfoVo : importVoList) {
@ -794,8 +790,8 @@ public class AsBusclaimInvoiceBillService extends MybatisBaseService<AsBusclaimI
checkWord.add("索赔单号" + excelInfoVo.getClaimBillNo() + "不存在");
break;
}else {
BigDecimal importMoney = new BigDecimal(excelInfoVo.getClaimHourAmount()).add(new BigDecimal(excelInfoVo.getClaimGoodsAmount()).add(new BigDecimal(excelInfoVo.getClaimOutAmount()).add(new BigDecimal(excelInfoVo.getClaimSubsidyAmount()).add(new BigDecimal(excelInfoVo.getClaimOtherAmount())))));
BigDecimal selectMoney = asBusclaimBill.getClaimHourAmount().add(asBusclaimBill.getClaimGoodsAmount().add(asBusclaimBill.getClaimOutAmount().add(asBusclaimBill.getClaimSubsidyAmount().add(asBusclaimBill.getClaimOtherAmount()))));
BigDecimal importMoney = new BigDecimal(excelInfoVo.getClaimHourAmount()).add(new BigDecimal(excelInfoVo.getClaimGoodsAmount())).add(new BigDecimal(excelInfoVo.getClaimOutAmount())).add(new BigDecimal(excelInfoVo.getClaimSubsidyAmount())).add(new BigDecimal(excelInfoVo.getClaimOtherAmount()));
BigDecimal selectMoney = asBusclaimBill.getClaimHourAmount().add(asBusclaimBill.getClaimGoodsAmount()).add(asBusclaimBill.getClaimOutAmount()).add(asBusclaimBill.getClaimSubsidyAmount()).add(asBusclaimBill.getClaimOtherAmount());
if (importMoney.compareTo(selectMoney) != 0){
excelInfoVo.setIsUnanimous(false);
}else {

92
yxt-oa/pom.xml

@ -0,0 +1,92 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>com.yxt</groupId>
<artifactId>yxt-parent</artifactId>
<version>0.0.1</version>
<relativePath/>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.yxt.anrui</groupId>
<artifactId>yxt-oa</artifactId>
<version>0.0.1</version>
<name>yxt-oa</name>
<dependencies>
<dependency>
<groupId>com.yxt</groupId>
<artifactId>yxt-common-base</artifactId>
<version>0.0.1</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-annotation</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
<optional>true</optional>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.5.6</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*Mapper.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.*</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
</project>

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

146
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<PagerVo<OaLeaveApplyVo>> listPage(@RequestBody PagerQuery<OaLeaveApplyQuery> pq) {
ResultBean rb = ResultBean.fireFail();
PagerVo<OaLeaveApplyVo> 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<OaLeaveApplyDetailsVo> fetchDetailsBySid(@PathVariable("sid") String sid) {
ResultBean rb = ResultBean.fireFail();
OaLeaveApplyDetailsVo vo = oaLeaveApplyService.fetchDetailsVoBySid(sid);
return rb.success().setData(vo);
}
@ApiOperation("初始化")
@GetMapping("/init")
public ResultBean<OaLeaveApplyInitVo> 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<List<OaLeaveApplyNodeVo>> getPreviousNodesForReject(@Valid @SpringQueryMap OaLeaveApplyNodeQuery query) {
return oaLeaveApplyService.getPreviousNodesForReject(query);
}
@ApiOperation(value = "获取下一个环节")
@GetMapping(value = "/getNextNodesForSubmit")
public ResultBean<List<OaLeaveApplyNodeVo>> 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);
}
}

53
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; // 文件的路径
}

52
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; // 文件的路径
}

52
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; // 文件的路径
}

39
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<OaAppendix> {
@Select("select * from as_appendix where linkSid = #{linkSid}")
List<OaAppendix> fetchByLinkSid(String linkSid);
}

6
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaappendix/OaAppendixMapper.xml

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yxt.anrui.oa.biz.oaappendix.OaAppendixMapper">
<!-- <where> ${ew.sqlSegment} </where>-->
<!-- ${ew.customSqlSegment} -->
</mapper>

39
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<OaAppendixMapper, OaAppendix> {
public List<OaAppendix> fetchByLinkSid(String linkSid) {
return baseMapper.fetchByLinkSid(linkSid);
}
}

95
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(请假申请) <br/>
* File: OaLeaveApply.java <br/>
* Class: com.yxt.anrui.oa.api.oaleaveapply.OaLeaveApply <br/>
* Description: 请假申请. <br/>
* Copyright: Copyright (c) 2011 <br/>
* Company: https://gitee.com/liuzp315 <br/>
* Makedate: 2024-11-28 15:24:37 <br/>
*
* @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; // 流程状态
}

101
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(请假申请) <br/>
* File: OaLeaveApplyVo.java <br/>
* Class: com.yxt.anrui.oa.api.oaleaveapply.OaLeaveApplyVo <br/>
* Description: 请假申请 视图数据对象. <br/>
* Copyright: Copyright (c) 2011 <br/>
* Company: https://gitee.com/liuzp315 <br/>
* Makedate: 2024-11-28 15:24:37 <br/>
*
* @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<String> files = new ArrayList<>();
}

103
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(请假申请) <br/>
* File: OaLeaveApplyDto.java <br/>
* Class: com.yxt.anrui.oa.api.oaleaveapply.OaLeaveApplyDto <br/>
* Description: 请假申请 数据传输对象. <br/>
* Copyright: Copyright (c) 2011 <br/>
* Company: https://gitee.com/liuzp315 <br/>
* Makedate: 2024-11-28 15:24:37 <br/>
*
* @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<OaLeaveType> 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<String> files = new ArrayList<>();
}

103
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(请假申请) <br/>
* File: OaLeaveApplyVo.java <br/>
* Class: com.yxt.anrui.oa.api.oaleaveapply.OaLeaveApplyVo <br/>
* Description: 请假申请 视图数据对象. <br/>
* Copyright: Copyright (c) 2011 <br/>
* Company: https://gitee.com/liuzp315 <br/>
* Makedate: 2024-11-28 15:24:37 <br/>
*
* @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<OaLeaveType> 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<String> files = new ArrayList<>();
}

59
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(请假申请) <br/>
* File: OaLeaveApplyMapper.java <br/>
* Class: com.yxt.anrui.oa.biz.oaleaveapply.OaLeaveApplyMapper <br/>
* Description: 请假申请. <br/>
* Copyright: Copyright (c) 2011 <br/>
* Company: https://gitee.com/liuzp315 <br/>
* Makedate: 2024-11-28 15:24:37 <br/>
*
* @author liupopo
* @version 1.0
* @since 1.0
*/
@Mapper
public interface OaLeaveApplyMapper extends BaseMapper<OaLeaveApply> {
IPage<OaLeaveApplyVo> selectPageVo(IPage<OaLeaveApply> page, @Param(Constants.WRAPPER) Wrapper<OaLeaveApply> qw);
int updateFlowFiled(Map<String, Object> map);
int selectBySid(String join);
String selectNum(String billNo);
}

42
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaleaveapply/OaLeaveApplyMapper.xml

@ -0,0 +1,42 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yxt.anrui.oa.biz.oaleaveapply.OaLeaveApplyMapper">
<!-- <where> ${ew.sqlSegment} </where>-->
<!-- ${ew.customSqlSegment} -->
<select id="selectPageVo" resultType="com.yxt.anrui.oa.biz.oaleaveapply.OaLeaveApplyVo">
SELECT * FROM oa_leave_apply <where> ${ew.sqlSegment} </where>
</select>
<update id="updateFlowFiled">
UPDATE oa_leave_apply
SET nodeState=#{nodeState}, nodeId=#{taskDefKey}
<if test="nodeState == '已办结' or nodeState == '终止'">
, finishTime = NOW()
</if>
<if test="procDefId != null and procDefId != ''">
, procDefId=#{procDefId}
</if>
<if test="procInsId != null and procInsId != ''">
, procInstId=#{procInsId}
</if>
<if test="taskId != null and taskId != ''">
, taskId=#{taskId}
</if>
WHERE sid=#{sid}
</update>
<select id="selectBySid" resultType="int">
SELECT COUNT(*)
FROM oa_leave_apply
WHERE nodeState != '待提交'
and find_in_set(sid, #{list})
</select>
<select id="selectNum" resultType="java.lang.String">
select RIGHT (billNo, 4)
from oa_leave_apply
where billNo LIKE concat(#{billNo}, '%')
order by billNo desc
limit 1
</select>
</mapper>

93
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(请假申请) <br/>
* File: OaLeaveApplyQuery.java <br/>
* Class: com.yxt.anrui.oa.api.oaleaveapply.OaLeaveApplyQuery <br/>
* Description: 请假申请 查询条件. <br/>
* Copyright: Copyright (c) 2011 <br/>
* Company: https://gitee.com/liuzp315 <br/>
* Makedate: 2024-11-28 15:24:37 <br/>
*
* @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; // 流程状态
}

628
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<OaLeaveApplyMapper, OaLeaveApply> {
@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<OaLeaveApplyVo> listPageVo(PagerQuery<OaLeaveApplyQuery> pq) {
OaLeaveApplyQuery query = pq.getParams();
QueryWrapper<OaLeaveApply> qw = new QueryWrapper<>();
IPage<OaLeaveApply> page = PagerUtil.queryToPage(pq);
IPage<OaLeaveApplyVo> pagging = baseMapper.selectPageVo(page, qw);
PagerVo<OaLeaveApplyVo> p = PagerUtil.pageToVo(pagging, null);
return p;
}
public String saveOrUpdateDto(OaLeaveApplyDto dto) {
String dtoSid = dto.getSid();
List<String> 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<String> 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<OaAppendix> oaAppendices = oaAppendixService.fetchByLinkSid(sid);
List<String> 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<String, Object> 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<String, Object> 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<UpdateFlowFieldVo> 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<Runnable>(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<String, Object> map) {
return baseMapper.updateFlowFiled(map);
}
public ResultBean complete(BusinessVariables bv) {
ResultBean rb = ResultBean.fireFail();
String businessSid = bv.getBusinessSid();
OaLeaveApply oaLeaveApply = fetchBySid(businessSid);
Map<String, Object> 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<String, Object> 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<UpdateFlowFieldVo> 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<Runnable>(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<List<OaLeaveApplyNodeVo>> getPreviousNodesForReject(OaLeaveApplyNodeQuery query) {
ResultBean<List<OaLeaveApplyNodeVo>> rb = ResultBean.fireFail();
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(query, bv);
//流程中的参数赋值、若有网关,则赋值网关中判断的字段。
Map<String, Object> 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<List<Map<String, Object>>> resultBean = flowTaskFeign.getPreviousNodesForReject(bv);
//判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo
List<OaLeaveApplyNodeVo> 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<List<OaLeaveApplyNodeVo>> getNextNodesForSubmit(OaLeaveApplyNodeQuery query) {
ResultBean<List<OaLeaveApplyNodeVo>> rb = ResultBean.fireFail();
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(query, bv);
//流程中的参数赋值、若有网关,则赋值网关中判断的字段。
Map<String, Object> 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<List<Map<String, Object>>> resultBean = flowTaskFeign.getNextNodesForSubmit(bv);
//判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo
List<OaLeaveApplyNodeVo> 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<String, Object> variables = new HashMap<>();
Map<String, Object> 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<UpdateFlowFieldVo> resultBean = flowableFeign.taskReject(flowTaskVo);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
UpdateFlowFieldVo ufVo = resultBean.getData();
Map<String, Object> 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<Runnable>(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<List<LatestTaskVo>> listResultBean = flowTaskFeign.getLatestTasks(procId);
String nextNodeUserSids = listResultBean.getData().get(0).getASSIGNEE_();
List<String> 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<UpdateFlowFieldVo> 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<UpdateFlowFieldVo> resultBean = flowableFeign.breakProcess(flowTaskVo);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
Map<String, Object> 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<UpdateFlowFieldVo> resultBean = flowableFeign.breakProcess(flowTaskVo);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
Map<String, Object> 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<OaLeaveType> types = new ArrayList<>();
List<DictCommon> 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;
}
}

94
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(请假申请) <br/>
* File: OaLeaveApplyVo.java <br/>
* Class: com.yxt.anrui.oa.api.oaleaveapply.OaLeaveApplyVo <br/>
* Description: 请假申请 视图数据对象. <br/>
* Copyright: Copyright (c) 2011 <br/>
* Company: https://gitee.com/liuzp315 <br/>
* Makedate: 2024-11-28 15:24:37 <br/>
*
* @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; // 流程状态
}

11
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; //额外追加字符串
}

37
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;
}

26
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;
}

25
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;
}

26
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<String> candidateGroups;
@ApiModelProperty(value = "是否是最后环节")
private String endTask;
}

48
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;
}

24
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;
}

24
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;
}

44
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;
}
}

38
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;
}
}

65
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<String, Object> formVariables =new HashMap<>();
/* @ApiModelProperty("机构sid:切换结构使用")
private String orgPath;*/
}

20
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<String, Object> variables;
@ApiModelProperty("流程id")
private String proDefKey;
}

38
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<Map<String,Object>> getMap(@RequestBody FlowProcessMapQuery query);
@ApiOperation(value = "驳回流程")
@PostMapping(value = "/taskReject")
@ResponseBody
ResultBean<UpdateFlowFieldVo> taskReject(@RequestBody FlowTaskVo fl);
@ApiOperation(value = "撤回流程")
@PostMapping(value = "/revokeProcess")
@ResponseBody
ResultBean<UpdateFlowFieldVo> revokeProcess(@RequestBody FlowTaskVo fl);
@ApiOperation(value = "终止流程")
@PostMapping(value = "/breakProcess")
@ResponseBody
ResultBean<UpdateFlowFieldVo> breakProcess(@RequestBody FlowTaskVo fl);
}

38
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;
}
}

68
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;
}
}

23
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;
}

36
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<UpdateFlowFieldVo> startProcess(@RequestBody BusinessVariables dto);
@ApiOperation(value = "处理流程")
@PostMapping(value = "/handleProsess")
@ResponseBody
ResultBean<UpdateFlowFieldVo> handleProsess(@RequestBody BusinessVariables bv);
@ApiOperation(value = "转办")
@PostMapping(value = "/assignTask")
public ResultBean assignTask(@RequestBody FlowDelegateQuery flowDelegateQuery);
}

31
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<List<LatestTaskVo>> getLatestTasks(@PathVariable(value = "procId") String procId);
}

53
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;
/**
* <p>流程任务<p>
*
* @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<String, Object> values=new HashMap<>();
@ApiModelProperty("审批人")
private String assignee;
@ApiModelProperty("候选人")
private List<String> candidateUsers;
@ApiModelProperty("审批组")
private List<String> candidateGroups;
}

34
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;
}

26
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<String> pushMessage(@RequestBody MessageFlowableQuery query);
}

21
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;
}

32
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<String,Object> appMap;
@ApiModelProperty("申请人")
private String applicationName;
}

34
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<String> receivedSids;
/* @ApiModelProperty("跳转地址")
private String msgTargetUri;*/
@ApiModelProperty("0.内置Activity 1.内置WebView 2.RePlugin插件")
private String app_type;
@ApiModelProperty("插件sid")
private String moduleSid;
}

25
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;
}

25
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<List<DictCommon>> selectByType(@RequestParam("dictValue") String dictValue);
}

92
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(门户建设) <br/>
* File: SysOrganization.java <br/>
* Class: com.yxt.anrui.portal.api.sysorganization.SysOrganization <br/>
* Description: 组织机构表. <br/>
* Copyright: Copyright (c) 2011 <br/>
* Company: https://gitee.com/liuzp315 <br/>
* Makedate: 2021-08-03 00:24:28 <br/>
*
* @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;
}

35
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(门户建设) <br/>
* File: SysOrganizationFeign.java <br/>
* Class: com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign <br/>
* Description: 组织机构表. <br/>
* Copyright: Copyright (c) 2011 <br/>
* Company: https://gitee.com/liuzp315 <br/>
* Makedate: 2021-08-03 00:24:28 <br/>
*
* @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<SysOrganizationVo> fetchBySid(@PathVariable("sid") String sid);
}

88
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(门户建设) <br/>
* File: SysOrganizationVo.java <br/>
* Class: com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo <br/>
* Description: 组织机构表 视图数据对象. <br/>
* Copyright: Copyright (c) 2011 <br/>
* Company: https://gitee.com/liuzp315 <br/>
* Makedate: 2021-08-03 00:24:28 <br/>
*
* @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<SysOrganizationVo> 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;
}

25
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<String> getOrgSidByPath(@RequestParam("orgPath") String orgPath);
}

22
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<List<String>> getUserRoleSidByUserSid(@PathVariable("userSid") String userSid);
}

22
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;
}

21
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;
}

27
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<String> selectPrivilegeLevel(@RequestBody PrivilegeQuery query);
@ApiOperation("根据sid获取一条记录")
@GetMapping("/fetchBySid/{sid}")
public ResultBean<SysUserVo> fetchBySid(@PathVariable("sid") String sid);
}

97
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(门户建设) <br/>
* File: SysUserVo.java <br/>
* Class: com.yxt.anrui.portal.api.sysuser.SysUserVo <br/>
* Description: 用户表 视图数据对象. <br/>
* Copyright: Copyright (c) 2011 <br/>
* Company: https://gitee.com/liuzp315 <br/>
* Makedate: 2021-08-03 00:24:30 <br/>
*
* @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<String> roleSids = new ArrayList<>();
private List<OrgList> 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;
}

33
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/

28
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/

31
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/

62
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

13
yxt-oa/src/main/resources/banner.txt

@ -0,0 +1,13 @@
,----.. ____
/ / \ ,' , `.
| : : ,---. ,-+-,.' _ | ,---. ,---,
. | ;. / ' ,'\ ,-+-. ; , || ' ,'\ ,-+-. / |
. ; /--` / / | ,--.'|' | || ,---. / / | ,--.'|' |
; | ; . ; ,. :| | ,', | |,/ \ . ; ,. :| | ,"' |
| : | ' | |: :| | / | |--'/ / | ' | |: :| | / | |
. | '___' | .; :| : | | , . ' / | ' | .; :| | | | |
' ; : .'| : || : | |/ ' ; /| | : || | | |/
' | '/ :\ \ / | | |`-' ' | / | \ \ / | | |--'
| : / `----' | ;/ | : | `----' | |/
\ \ .' '---' \ \ / '---'
`---` `----'

50
yxt-oa/src/main/resources/logback-spring.xml

@ -0,0 +1,50 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property name="log.base" value="logs/yxt_as" />
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 :
|%blue(%thread) 线程 如 :DiscoveryClient-CacheRefreshExecutor-0-->
<!--<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>-->
<pattern>%yellow(%date{yyyy-MM-dd HH:mm:ss}) |%highlight(%-5level) |%green(%logger:%line) |%blue(%msg%n)
</pattern>
<!--<charset>UTF-8</charset> -->
</encoder>
</appender>
<!-- 彩色日志 -->
<!-- 彩色日志依赖的渲染类 -->
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
<conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
<conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
<!-- 彩色日志格式 -->
<property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<appender name="FILEOUT"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.base}.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log.base}.%d{yyyyMMdd}.%i.log.zip
</fileNamePattern>
<!-- 当文件大小超过10MB时触发滚动 -->
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>1MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<!--<pattern>%date [%thread] %-5level %logger{35} - %msg%n</pattern>-->
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36}
-%msg%n</Pattern>
<!--<charset>UTF-8</charset> -->
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILEOUT" />
</root>
</configuration>

4
yxt-vehfleet/src/main/java/com/yxt/anrui/vehfleet/VehfleetApplication.java → 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 {
Loading…
Cancel
Save