add : 流程图开发
This commit is contained in:
@@ -33,6 +33,18 @@ public class FlwInstanceController {
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 发起流程
|
||||
*/
|
||||
@RequestMapping("/startFlowInstance1")
|
||||
public R startFlowInstance1(@RequestParam Map<String, Object> params){
|
||||
|
||||
instanceService.startFlowInstance1(params);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 我的待办
|
||||
*/
|
||||
@@ -69,12 +81,49 @@ public class FlwInstanceController {
|
||||
*/
|
||||
@PostMapping("/completeFlow")
|
||||
public R completeFlow(@RequestBody Map<String, Object> params){
|
||||
|
||||
R r = instanceService.completeTaskById(params);
|
||||
return r;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 任务节点1审批通过工单完结
|
||||
*/
|
||||
@PostMapping("/completeFlow1")
|
||||
public R completeFlow1(@RequestBody Map<String, Object> params){
|
||||
|
||||
R r = instanceService.completeTaskById1(params);
|
||||
|
||||
return r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 任务节点1无法解决进入下一个节点
|
||||
*/
|
||||
@PostMapping("/deleteFlow1")
|
||||
public R deleteFlow1(@RequestBody Map<String, Object> params){
|
||||
|
||||
R r = instanceService.deleteFlow1(params);
|
||||
|
||||
return r;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 终结流程
|
||||
*/
|
||||
@PostMapping("/deleteFlow")
|
||||
public R deleteFlow(@RequestBody Map<String, Object> params){
|
||||
|
||||
R r = instanceService.deleteFlow(params);
|
||||
|
||||
return r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@RequestMapping("/claimTask/{id}")
|
||||
public R claimTask(@PathVariable("id") String id){
|
||||
if(StringUtils.isBlank(id)){
|
||||
|
||||
@@ -9,10 +9,14 @@ import java.util.Map;
|
||||
public interface FlwInstanceService {
|
||||
void startFlowInstance(Map<String, Object> params);
|
||||
|
||||
void startFlowInstance1(Map<String, Object> params);
|
||||
|
||||
R getTodoTaskList(Map<String, Object> params);
|
||||
|
||||
R completeTaskById(Map<String, Object> id);
|
||||
|
||||
R completeTaskById1(Map<String, Object> id);
|
||||
|
||||
void unclaimTask(String id);
|
||||
|
||||
void claimTask(String id);
|
||||
@@ -26,4 +30,8 @@ public interface FlwInstanceService {
|
||||
R getMyCompleteTaskList(Map<String, Object> params);
|
||||
|
||||
List<FlwHiTaskEntity> getCompleteHiTaskInstance(String id);
|
||||
|
||||
R deleteFlow(Map<String, Object> params);
|
||||
|
||||
R deleteFlow1(Map<String, Object> params);
|
||||
}
|
||||
|
||||
@@ -25,6 +25,7 @@ import org.flowable.bpmn.model.BpmnModel;
|
||||
import org.flowable.bpmn.model.FlowElement;
|
||||
import org.flowable.bpmn.model.Process;
|
||||
import org.flowable.bpmn.model.UserTask;
|
||||
import org.flowable.common.engine.api.FlowableException;
|
||||
import org.flowable.engine.ProcessEngineConfiguration;
|
||||
import org.flowable.engine.history.HistoricActivityInstance;
|
||||
import org.flowable.engine.history.HistoricProcessInstance;
|
||||
@@ -88,7 +89,7 @@ public class FlwInstanceServiceImpl extends FlowServiceNoFactory implements FlwI
|
||||
public void startFlowInstance(Map<String, Object> params) {
|
||||
SysUserEntity loginUser = ShiroUtils.getUserEntity();
|
||||
// 获取需要发起的流程信息
|
||||
String ticketsId = (String) params.get("ticketsId");
|
||||
// String ticketsId = (String) params.get("ticketsId");
|
||||
Long userId = Long.valueOf((String) params.get("user1"));
|
||||
Map<String, Object> variable = new HashMap<>();
|
||||
// 结合传递过来的数据动态的绑定流程变量
|
||||
@@ -98,27 +99,43 @@ public class FlwInstanceServiceImpl extends FlowServiceNoFactory implements FlwI
|
||||
// 记录流程的发起人
|
||||
identityService.setAuthenticatedUserId(ShiroUtils.getUserId().toString());
|
||||
// 启动流程
|
||||
ProcessInstance processInstance = runtimeService.startProcessInstanceById(defId, variable);
|
||||
try {
|
||||
ProcessInstance processInstance = runtimeService.startProcessInstanceById(defId, variable);
|
||||
}catch (FlowableException e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
SysUserEntity user = sysUserService.getById(userId);
|
||||
//更新工单审批id
|
||||
TicketsEntity ticketsEntity = new TicketsEntity();
|
||||
ticketsEntity.setTicketsId(Long.valueOf(ticketsId));
|
||||
ticketsEntity.setStatus(TicketsStatusEnums.CHECKED.getCode());
|
||||
ticketsEntity.setProcessInstance(processInstance.getProcessInstanceId());
|
||||
ticketsEntity.setDeptPeople(user.getNickname());
|
||||
ticketsEntity.setAssignUserId(userId);
|
||||
ticketsService.updateById(ticketsEntity);
|
||||
// TicketsEntity ticketsEntity = new TicketsEntity();
|
||||
// ticketsEntity.setTicketsId(Long.valueOf(ticketsId));
|
||||
// ticketsEntity.setStatus(TicketsStatusEnums.CHECKED.getCode());
|
||||
// ticketsEntity.setProcessInstance(processInstance.getProcessInstanceId());
|
||||
// ticketsEntity.setDeptPeople(user.getNickname());
|
||||
// ticketsEntity.setAssignUserId(userId);
|
||||
// ticketsService.updateById(ticketsEntity);
|
||||
|
||||
if (StrUtil.isEmpty(user.getWexinId())){
|
||||
throw new RRException("企业id为空,企业微信消息无法推送");
|
||||
}
|
||||
|
||||
String accessToken = getAccessToken();
|
||||
sendWeChatMessage(user.getWexinId(),"工单已推送,请登入售后管理系统处理",accessToken,ticketsId);
|
||||
// sendWeChatMessage(user.getWexinId(),"工单已推送,请登入售后管理系统处理",accessToken,ticketsId);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void startFlowInstance1(Map<String, Object> params) {
|
||||
// 启动流程
|
||||
try {
|
||||
Map<String, Object> startVars = new HashMap<>();
|
||||
runtimeService.startProcessInstanceById(defId, startVars); }
|
||||
catch (FlowableException e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取access_token
|
||||
*/
|
||||
@@ -331,7 +348,7 @@ public class FlwInstanceServiceImpl extends FlowServiceNoFactory implements FlwI
|
||||
@Override
|
||||
public R completeTaskById(Map<String, Object> params) {
|
||||
String processInstance = (String) params.get("processInstance");
|
||||
Integer ticketsId = (Integer) params.get("ticketsId");
|
||||
// Integer ticketsId = (Integer) params.get("ticketsId");
|
||||
if(StringUtils.isBlank(processInstance)){
|
||||
return R.error("流程Id不能为空");
|
||||
}
|
||||
@@ -341,15 +358,74 @@ public class FlwInstanceServiceImpl extends FlowServiceNoFactory implements FlwI
|
||||
taskService.complete(tasks.get(0).getId());
|
||||
}
|
||||
//更新工单审批id
|
||||
TicketsEntity ticketsEntity = new TicketsEntity();
|
||||
ticketsEntity.setTicketsId(Long.valueOf(ticketsId));
|
||||
ticketsEntity.setStatus(TicketsStatusEnums.CANCEL.getCode());
|
||||
ticketsEntity.setUpdateTime(new Date());
|
||||
ticketsService.updateById(ticketsEntity);
|
||||
// TicketsEntity ticketsEntity = new TicketsEntity();
|
||||
// ticketsEntity.setTicketsId(Long.valueOf(ticketsId));
|
||||
// ticketsEntity.setStatus(TicketsStatusEnums.CANCEL.getCode());
|
||||
// ticketsEntity.setUpdateTime(new Date());
|
||||
// ticketsService.updateById(ticketsEntity);
|
||||
|
||||
return R.ok("操作成功");
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public R completeTaskById1(Map<String, Object> params) {
|
||||
String processInstance = (String) params.get("processInstance");
|
||||
if(StringUtils.isBlank(processInstance)){
|
||||
return R.error("流程Id不能为空");
|
||||
}
|
||||
Task secondTask = taskService.createTaskQuery()
|
||||
.processInstanceId(processInstance)
|
||||
.singleResult();
|
||||
Map<String, Object> secondApprovalVars = new HashMap<>();
|
||||
secondApprovalVars.put("approvalResult", true);
|
||||
taskService.complete(secondTask.getId(), secondApprovalVars);
|
||||
return R.ok("操作成功");
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public R deleteFlow1(Map<String, Object> params) {
|
||||
String processInstance = (String) params.get("processInstance");
|
||||
if(StringUtils.isBlank(processInstance)){
|
||||
return R.error("流程Id不能为空");
|
||||
}
|
||||
Task secondTask = taskService.createTaskQuery()
|
||||
.processInstanceId(processInstance)
|
||||
.singleResult();
|
||||
Map<String, Object> secondApprovalVars = new HashMap<>();
|
||||
secondApprovalVars.put("approvalResult", false);
|
||||
secondApprovalVars.put("user1", 2);
|
||||
taskService.complete(secondTask.getId(), secondApprovalVars);
|
||||
return R.ok("操作成功");
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public R deleteFlow(Map<String, Object> params) {
|
||||
String processInstance = (String) params.get("processInstance");
|
||||
// Integer ticketsId = (Integer) params.get("ticketsId");
|
||||
if(StringUtils.isBlank(processInstance)){
|
||||
return R.error("流程Id不能为空");
|
||||
}
|
||||
//查询活跃任务
|
||||
TaskQuery taskQuery = taskService.createTaskQuery().active().processInstanceId(processInstance);
|
||||
List<Task> tasks = taskQuery.list();
|
||||
if (tasks.isEmpty()){
|
||||
return R.error("没有可终结的任务");
|
||||
}
|
||||
runtimeService.deleteProcessInstance(processInstance, "测试终结流程");
|
||||
//更新工单审批id
|
||||
// TicketsEntity ticketsEntity = new TicketsEntity();
|
||||
// ticketsEntity.setTicketsId(Long.valueOf(ticketsId));
|
||||
// ticketsEntity.setStatus(TicketsStatusEnums.CANCEL.getCode());
|
||||
// ticketsEntity.setUpdateTime(new Date());
|
||||
// ticketsService.updateById(ticketsEntity);
|
||||
|
||||
return R.ok("操作成功");
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void unclaimTask(String id) {
|
||||
taskService.unclaim(id);
|
||||
|
||||
@@ -88,7 +88,6 @@ public class FileController {
|
||||
if(StringUtils.isBlank(procId)|| "null".equals(procId) || "undefined".equals(procId)){
|
||||
return ;
|
||||
}
|
||||
|
||||
byte[] bytes = instanceService.diagram(procId);
|
||||
response.setContentType("image/png");
|
||||
ServletOutputStream outputStream = response.getOutputStream();
|
||||
|
||||
@@ -75,11 +75,7 @@ public class TicketsController {
|
||||
@RequestMapping("/save")
|
||||
//@RequiresPermissions("tickets:tickets:save")
|
||||
public R save(@RequestBody TicketsEntity tickets){
|
||||
SysUserEntity loginUser = ShiroUtils.getUserEntity();
|
||||
tickets.setCreateTime(new Date());
|
||||
tickets.setCreateUser(loginUser.getNickname());
|
||||
ticketsService.save(tickets);
|
||||
|
||||
ticketsService.saveTicket(tickets);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.boge.modules.tickets.dto;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Date;
|
||||
@@ -28,7 +29,7 @@ public class TicketsDTO {
|
||||
/**
|
||||
* 合同编号
|
||||
*/
|
||||
private String contractNumber;
|
||||
private String contractCode;
|
||||
/**
|
||||
* 客户id
|
||||
*/
|
||||
@@ -51,9 +52,9 @@ public class TicketsDTO {
|
||||
*/
|
||||
private String deptPhone;
|
||||
/**
|
||||
* 创建者ID
|
||||
* 创建者
|
||||
*/
|
||||
private Long createUserId;
|
||||
private String createUser;
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@@ -65,12 +66,14 @@ public class TicketsDTO {
|
||||
/**
|
||||
* 工单状态
|
||||
*/
|
||||
|
||||
private Integer status;
|
||||
/**
|
||||
* 工单关闭时间
|
||||
*/
|
||||
private Date updateTime;
|
||||
|
||||
|
||||
/**
|
||||
* 审批流id
|
||||
*/
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.boge.modules.tickets.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
|
||||
@@ -79,6 +80,8 @@ public class TicketsEntity implements Serializable {
|
||||
*/
|
||||
private Date updateTime;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 审批流id
|
||||
*/
|
||||
|
||||
@@ -21,5 +21,7 @@ public interface TicketsService extends IService<TicketsEntity> {
|
||||
TicketsDTO getTicketsById(String ticketsId);
|
||||
|
||||
PageUtils queryPageByType(Map<String, Object> params);
|
||||
|
||||
void saveTicket(TicketsEntity tickets);
|
||||
}
|
||||
|
||||
|
||||
@@ -12,11 +12,17 @@ import com.boge.modules.sys.entity.SysUserEntity;
|
||||
import com.boge.modules.sys.service.SysUserRoleService;
|
||||
import com.boge.modules.sys.service.impl.SysUserServiceImpl;
|
||||
import com.boge.modules.tickets.dto.TicketsDTO;
|
||||
import org.flowable.common.engine.api.FlowableException;
|
||||
import org.flowable.engine.RuntimeService;
|
||||
import org.flowable.engine.runtime.ProcessInstance;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.boge.modules.tickets.enums.TicketsTypeEnums;
|
||||
import com.boge.modules.tickets.enums.TicketsStatusEnums;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@@ -45,18 +51,25 @@ public class TicketsServiceImpl extends ServiceImpl<TicketsDao, TicketsEntity> i
|
||||
@Autowired
|
||||
private SysUserRoleService sysUserRoleService;
|
||||
|
||||
@Autowired
|
||||
protected RuntimeService runtimeService;
|
||||
|
||||
@Value("${ProcessInstance.defId}")
|
||||
private String defId;
|
||||
|
||||
@Override
|
||||
public PageUtils queryPage(Map<String, Object> params) {
|
||||
SysUserEntity loginUser = ShiroUtils.getUserEntity();
|
||||
QueryWrapper<TicketsEntity> ticketsEntityQueryWrapper = new QueryWrapper<>();
|
||||
if (ObjectUtil.isNotEmpty(loginUser)){
|
||||
if (ObjectUtil.isNotEmpty(loginUser)) {
|
||||
List<Long> longs = sysUserRoleService.queryRoleIdList(loginUser.getUserId());
|
||||
//判断是否是超级管理员
|
||||
if (longs.contains(2L)){
|
||||
ticketsEntityQueryWrapper.orderBy(true, false,"create_time");
|
||||
}else {
|
||||
if (longs.contains(2L)) {
|
||||
ticketsEntityQueryWrapper.orderBy(true, false, "create_time");
|
||||
} else {
|
||||
ticketsEntityQueryWrapper.eq("assign_user_id", loginUser.getUserId())
|
||||
.orderBy(true, false,"create_time");;
|
||||
.orderBy(true, false, "create_time");
|
||||
;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -71,18 +84,18 @@ public class TicketsServiceImpl extends ServiceImpl<TicketsDao, TicketsEntity> i
|
||||
public PageUtils queryPageByType(Map<String, Object> params) {
|
||||
SysUserEntity loginUser = ShiroUtils.getUserEntity();
|
||||
QueryWrapper<TicketsEntity> ticketsEntityQueryWrapper = new QueryWrapper<>();
|
||||
if (ObjectUtil.isNotEmpty(loginUser)){
|
||||
if (ObjectUtil.isNotEmpty(loginUser)) {
|
||||
//判断是否是超级管理员
|
||||
ticketsEntityQueryWrapper.orderBy(true, false,"create_time");
|
||||
if (TicketsTypeEnums.ASSIGN.getCode().equals(params.get("type"))){
|
||||
ticketsEntityQueryWrapper.orderBy(true, false, "create_time");
|
||||
if (TicketsTypeEnums.ASSIGN.getCode().equals(params.get("type"))) {
|
||||
ticketsEntityQueryWrapper.eq("create_user", loginUser.getUsername());
|
||||
}
|
||||
if (TicketsTypeEnums.TO_BE_DONE.getCode().equals(params.get("type"))){
|
||||
ticketsEntityQueryWrapper.eq("assign_user_id", loginUser.getUserId()).eq("status",TicketsStatusEnums.CHECKED.getCode());
|
||||
if (TicketsTypeEnums.TO_BE_DONE.getCode().equals(params.get("type"))) {
|
||||
ticketsEntityQueryWrapper.eq("assign_user_id", loginUser.getUserId()).eq("status", TicketsStatusEnums.CHECKED.getCode());
|
||||
}
|
||||
|
||||
if (TicketsTypeEnums.FINISH.getCode().equals(params.get("type"))){
|
||||
ticketsEntityQueryWrapper.eq("assign_user_id", loginUser.getUserId()).eq("status",TicketsStatusEnums.CANCEL.getCode());
|
||||
if (TicketsTypeEnums.FINISH.getCode().equals(params.get("type"))) {
|
||||
ticketsEntityQueryWrapper.eq("assign_user_id", loginUser.getUserId()).eq("status", TicketsStatusEnums.CANCEL.getCode());
|
||||
}
|
||||
|
||||
|
||||
@@ -95,6 +108,22 @@ public class TicketsServiceImpl extends ServiceImpl<TicketsDao, TicketsEntity> i
|
||||
return new PageUtils(page);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void saveTicket(TicketsEntity tickets) {
|
||||
// 启动流程
|
||||
try {
|
||||
Map<String, Object> startVars = new HashMap<>();
|
||||
ProcessInstance processInstance = runtimeService.startProcessInstanceById(defId, startVars);
|
||||
SysUserEntity loginUser = ShiroUtils.getUserEntity();
|
||||
tickets.setCreateTime(new Date());
|
||||
tickets.setCreateUser(loginUser.getNickname());
|
||||
tickets.setProcessInstance(processInstance.getProcessInstanceId());
|
||||
ticketsDao.insert(tickets);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public TicketsDTO getTicketsById(String ticketsId) {
|
||||
TicketsDTO tickets = ticketsDao.getTicketsDTOById(ticketsId);
|
||||
|
||||
@@ -8,12 +8,11 @@
|
||||
<result property="ticketsId" column="tickets_id"/>
|
||||
<result property="carType" column="car_type"/>
|
||||
<result property="errorType" column="error_type"/>
|
||||
<result property="contractId" column="contract_number"/>
|
||||
<result property="clientId" column="client_id"/>
|
||||
<result property="description" column="description"/>
|
||||
<result property="deptPeople" column="dept_people"/>
|
||||
<result property="deptPhone" column="dept_phone"/>
|
||||
<result property="createUserId" column="create_user_id"/>
|
||||
<result property="createUser" column="create_user"/>
|
||||
<result property="createTime" column="create_time"/>
|
||||
<result property="isCheck" column="is_check"/>
|
||||
<result property="status" column="status"/>
|
||||
@@ -23,8 +22,6 @@
|
||||
select * from sys_tickets as a
|
||||
left join sys_client as b on a.client_id = b.client_id
|
||||
left join sys_car as c on a.car_type = c.car_id
|
||||
left join sys_contract as d on a.contract_id = d.contract_id
|
||||
|
||||
where a.tickets_id = #{ticketsId}
|
||||
</select>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user