
94 changed files with 4798 additions and 25 deletions
@ -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
|
|||
} |
@ -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<>(); |
|||
} |
@ -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); |
|||
} |
@ -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
|
|||
} |
@ -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; //额外追加字符串
|
|||
} |
@ -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; |
|||
} |
@ -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; |
|||
} |
@ -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; |
|||
} |
@ -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; |
|||
} |
@ -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; |
|||
} |
@ -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); |
|||
} |
|||
} |
@ -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(); |
|||
} |
|||
} |
@ -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<>(); |
|||
} |
@ -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<>(); |
|||
} |
@ -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); |
|||
} |
@ -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<>(); |
|||
} |
@ -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; //额外追加字符串
|
|||
} |
@ -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; |
|||
} |
@ -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; |
|||
|
|||
|
|||
} |
@ -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; |
|||
} |
@ -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; |
|||
} |
@ -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; |
|||
} |
@ -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; |
|||
} |
@ -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> |
@ -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); |
|||
} |
|||
} |
@ -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); |
|||
} |
|||
} |
@ -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; // 文件的路径
|
|||
|
|||
} |
@ -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; // 文件的路径
|
|||
|
|||
} |
@ -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; // 文件的路径
|
|||
|
|||
} |
@ -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); |
|||
} |
@ -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> |
@ -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); |
|||
} |
|||
} |
@ -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; // 流程状态
|
|||
|
|||
} |
@ -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<>(); |
|||
} |
@ -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<>(); |
|||
} |
@ -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<>(); |
|||
} |
@ -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); |
|||
} |
@ -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> |
@ -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; // 流程状态
|
|||
|
|||
} |
@ -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; |
|||
} |
|||
} |
@ -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; // 流程状态
|
|||
|
|||
} |
@ -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; //额外追加字符串
|
|||
} |
@ -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; |
|||
} |
@ -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; |
|||
|
|||
|
|||
} |
@ -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; |
|||
} |
@ -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; |
|||
} |
@ -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; |
|||
} |
@ -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; |
|||
} |
@ -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; |
|||
|
|||
} |
@ -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; |
|||
} |
|||
} |
@ -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; |
|||
} |
|||
|
|||
|
|||
} |
@ -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;*/ |
|||
} |
@ -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; |
|||
} |
@ -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); |
|||
} |
@ -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; |
|||
} |
|||
} |
|||
|
@ -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; |
|||
} |
|||
} |
@ -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; |
|||
} |
@ -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); |
|||
|
|||
} |
@ -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); |
|||
|
|||
} |
@ -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; |
|||
|
|||
|
|||
|
|||
} |
@ -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; |
|||
} |
@ -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); |
|||
} |
@ -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; |
|||
} |
@ -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; |
|||
|
|||
} |
@ -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; |
|||
} |
@ -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; |
|||
} |
@ -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); |
|||
} |
@ -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; |
|||
} |
@ -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); |
|||
} |
@ -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; |
|||
} |
@ -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); |
|||
} |
@ -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); |
|||
} |
@ -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; |
|||
} |
@ -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; |
|||
} |
@ -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); |
|||
} |
@ -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; |
|||
} |
@ -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/ |
@ -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/ |
@ -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/ |
@ -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 |
|||
|
|||
|
|||
|
|||
|
@ -0,0 +1,13 @@ |
|||
,----.. ____ |
|||
/ / \ ,' , `. |
|||
| : : ,---. ,-+-,.' _ | ,---. ,---, |
|||
. | ;. / ' ,'\ ,-+-. ; , || ' ,'\ ,-+-. / | |
|||
. ; /--` / / | ,--.'|' | || ,---. / / | ,--.'|' | |
|||
; | ; . ; ,. :| | ,', | |,/ \ . ; ,. :| | ,"' | |
|||
| : | ' | |: :| | / | |--'/ / | ' | |: :| | / | | |
|||
. | '___' | .; :| : | | , . ' / | ' | .; :| | | | | |
|||
' ; : .'| : || : | |/ ' ; /| | : || | | |/ |
|||
' | '/ :\ \ / | | |`-' ' | / | \ \ / | | |--' |
|||
| : / `----' | ;/ | : | `----' | |/ |
|||
\ \ .' '---' \ \ / '---' |
|||
`---` `----' |
@ -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> |
Loading…
Reference in new issue