|
|
@ -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 |
|
|
|