add: 联调

This commit is contained in:
ls
2025-03-20 10:06:14 +08:00
parent 26f53ab96b
commit be3dfd8586
8 changed files with 86 additions and 22 deletions

View File

@@ -70,14 +70,12 @@ public class FlwInstanceController {
/**
* 审批通过
*/
@RequestMapping("/completeFlow/{id}")
public R completeFlow(@PathVariable("id") String id){
if(StringUtils.isBlank(id)){
return R.error("流程TaskId不能为空");
}
instanceService.completeTaskById(id);
@PostMapping("/completeFlow")
public R completeFlow(@RequestBody Map<String, Object> params){
return R.ok("操作成功");
R r = instanceService.completeTaskById(params);
return r;
}
@RequestMapping("/claimTask/{id}")

View File

@@ -3,7 +3,6 @@ package com.boge.modules.flow.service;
import com.boge.common.utils.R;
import com.boge.modules.flow.entity.FlwHiTaskEntity;
import java.io.InputStream;
import java.util.List;
import java.util.Map;
@@ -12,7 +11,7 @@ public interface FlwInstanceService {
R getTodoTaskList(Map<String, Object> params);
void completeTaskById(String id);
R completeTaskById(Map<String, Object> id);
void unclaimTask(String id);

View File

@@ -18,6 +18,9 @@ import com.boge.modules.sys.entity.SysUserEntity;
import com.boge.modules.sys.service.SysRoleService;
import com.boge.modules.sys.service.SysUserService;
import com.boge.modules.sys.service.impl.SysUserServiceImpl;
import com.boge.modules.tickets.entity.TicketsEntity;
import com.boge.modules.tickets.enums.TicketsStatusEnums;
import com.boge.modules.tickets.service.TicketsService;
import org.flowable.bpmn.model.BpmnModel;
import org.flowable.bpmn.model.FlowElement;
import org.flowable.bpmn.model.Process;
@@ -35,6 +38,7 @@ import org.flowable.task.api.Task;
import org.flowable.task.api.TaskQuery;
import org.flowable.task.api.history.HistoricTaskInstance;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.io.IOException;
@@ -59,6 +63,12 @@ public class FlwInstanceServiceImpl extends FlowServiceNoFactory implements FlwI
@Autowired
private SysUserServiceImpl sysUserService;
@Autowired
private TicketsService ticketsService;
@Value("${ProcessInstance.defId}")
private String defId;
//发送消息的类型
private final static String MSGTYPE = "text";
//将消息发送给所有成员
@@ -78,7 +88,8 @@ public class FlwInstanceServiceImpl extends FlowServiceNoFactory implements FlwI
public void startFlowInstance(Map<String, Object> params) {
SysUserEntity loginUser = ShiroUtils.getUserEntity();
// 获取需要发起的流程信息
String defId = (String) params.get("id");
String ticketsId = (String) params.get("ticketsId");
Map<String, Object> variable = new HashMap<>();
// 结合传递过来的数据动态的绑定流程变量
Set<String> keys = params.keySet();
@@ -87,14 +98,21 @@ public class FlwInstanceServiceImpl extends FlowServiceNoFactory implements FlwI
// 记录流程的发起人
identityService.setAuthenticatedUserId(ShiroUtils.getUserId().toString());
// 启动流程
runtimeService.startProcessInstanceById(defId, variable);
ProcessInstance processInstance = runtimeService.startProcessInstanceById(defId, variable);
SysUserEntity user = sysUserService.getById(Long.valueOf((String) params.get("user1")));
//更新工单审批id
TicketsEntity ticketsEntity = new TicketsEntity();
ticketsEntity.setTicketsId(Long.valueOf(ticketsId));
ticketsEntity.setStatus(TicketsStatusEnums.CHECKED.getCode());
ticketsEntity.setProcessInstance(processInstance.getProcessInstanceId());
ticketsService.updateById(ticketsEntity);
if (StrUtil.isEmpty(user.getWexinId())){
throw new RRException("企业id为空企业微信消息无法推送");
}
String accessToken = getAccessToken();
sendWeChatMessage(user.getWexinId(),"工单已推送,请登入售后管理系统处理",accessToken);
sendWeChatMessage(user.getWexinId(),"工单已推送,请登入售后管理系统处理",accessToken,ticketsId);
}
@@ -143,7 +161,7 @@ public class FlwInstanceServiceImpl extends FlowServiceNoFactory implements FlwI
public static void sendWeChatMessage(String toUser, String content, String ACCESS_TOKEN) {
public static void sendWeChatMessage(String toUser, String content, String ACCESS_TOKEN, String ticketsId) {
//请求串
String url = CREATE_SESSION_URL + ACCESS_TOKEN;
JSONObject jsonObject = new JSONObject();
@@ -151,9 +169,9 @@ public class FlwInstanceServiceImpl extends FlowServiceNoFactory implements FlwI
jsonObject.put("msgtype", "textcard");
jsonObject.put("agentid", 1000006);
JSONObject contentJSon = new JSONObject();
contentJSon.put("title", "审批待处理");
contentJSon.put("title", "[协同提醒] - 工单审批待处理");
contentJSon.put("description", "点击查看详情");
contentJSon.put("url", "http://localhost:8001/#/tickets-tickets");
contentJSon.put("url", "http://localhost:8001/#/tickets-detail?id="+ticketsId);
contentJSon.put("btntxt", "处理");
jsonObject.put("textcard", contentJSon);
@@ -309,9 +327,24 @@ public class FlwInstanceServiceImpl extends FlowServiceNoFactory implements FlwI
}
@Override
public void completeTaskById(String id) {
public R completeTaskById(Map<String, Object> params) {
String processInstance = (String) params.get("process_instance");
String ticketsId = (String) 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()){
taskService.complete(tasks.get(0).getId());
}
//更新工单审批id
TicketsEntity ticketsEntity = new TicketsEntity();
ticketsEntity.setTicketsId(Long.valueOf(ticketsId));
ticketsEntity.setStatus(TicketsStatusEnums.CANCEL.getCode());
ticketsService.updateById(ticketsEntity);
taskService.complete(id);
return R.ok("操作成功");
}
@Override

View File

@@ -31,11 +31,11 @@ public class TicketsEntity implements Serializable {
/**
* 异常类型
*/
private Integer errorType;
private String errorType;
/**
* 合同编号
*/
private String contractNumber;
private String contractId;
/**
* 客户id
*/
@@ -73,6 +73,11 @@ public class TicketsEntity implements Serializable {
*/
private Date updateTime;
/**
* 审批流id
*/
private String processInstance;
}

View File

@@ -0,0 +1,26 @@
package com.boge.modules.tickets.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum TicketsStatusEnums {
UNCHECK(0, "未开始"),
CHECKED(1, "已指派"),
REJECT(2, "处理中"),
CANCEL(3, "已完成");
private Integer code;
private String msg;
public static String getStatus(String code) {
for (TicketsStatusEnums value : values()) {
if (value.code.equals(code)) {
return value.msg;
}
}
return null;
}
}

View File

@@ -84,3 +84,6 @@ file:
maxSize: 100
avatarMaxSize: 5
ProcessInstance:
defId: Process_1:2:05cb9af4-03a2-11f0-8846-e40d36456f42

View File

@@ -4429,9 +4429,9 @@
"dev": true
},
"element-ui": {
"version": "2.8.2",
"resolved": "https://registry.npmmirror.com/element-ui/-/element-ui-2.8.2.tgz",
"integrity": "sha512-LABKHKGUyewFNvpf9BQLecB659Wq0XYvyP1tBveZ4RWpdlPSylDfGW/RLvDYU7zuCBoRasdZAz7ryjOwq1lLNg==",
"version": "2.15.14",
"resolved": "https://registry.npmmirror.com/element-ui/-/element-ui-2.15.14.tgz",
"integrity": "sha512-2v9fHL0ZGINotOlRIAJD5YuVB8V7WKxrE9Qy7dXhRipa035+kF7WuU/z+tEmLVPBcJ0zt8mOu1DKpWcVzBK8IA==",
"requires": {
"async-validator": "~1.8.1",
"babel-helper-vue-jsx-merge-props": "^2.0.0",