diff --git a/base-fast/src/main/java/com/boge/modules/flow/controller/FlwInstanceController.java b/base-fast/src/main/java/com/boge/modules/flow/controller/FlwInstanceController.java index c727160..a318bf7 100644 --- a/base-fast/src/main/java/com/boge/modules/flow/controller/FlwInstanceController.java +++ b/base-fast/src/main/java/com/boge/modules/flow/controller/FlwInstanceController.java @@ -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 params){ - return R.ok("操作成功"); + R r = instanceService.completeTaskById(params); + + return r; } @RequestMapping("/claimTask/{id}") diff --git a/base-fast/src/main/java/com/boge/modules/flow/service/FlwInstanceService.java b/base-fast/src/main/java/com/boge/modules/flow/service/FlwInstanceService.java index e3a1536..06e8f09 100644 --- a/base-fast/src/main/java/com/boge/modules/flow/service/FlwInstanceService.java +++ b/base-fast/src/main/java/com/boge/modules/flow/service/FlwInstanceService.java @@ -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 params); - void completeTaskById(String id); + R completeTaskById(Map id); void unclaimTask(String id); diff --git a/base-fast/src/main/java/com/boge/modules/flow/service/impl/FlwInstanceServiceImpl.java b/base-fast/src/main/java/com/boge/modules/flow/service/impl/FlwInstanceServiceImpl.java index 9d7ae55..acb669a 100644 --- a/base-fast/src/main/java/com/boge/modules/flow/service/impl/FlwInstanceServiceImpl.java +++ b/base-fast/src/main/java/com/boge/modules/flow/service/impl/FlwInstanceServiceImpl.java @@ -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 params) { SysUserEntity loginUser = ShiroUtils.getUserEntity(); // 获取需要发起的流程信息 - String defId = (String) params.get("id"); + String ticketsId = (String) params.get("ticketsId"); + Map variable = new HashMap<>(); // 结合传递过来的数据动态的绑定流程变量 Set 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 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 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 diff --git a/base-fast/src/main/java/com/boge/modules/tickets/dto/TicketsDTO.java b/base-fast/src/main/java/com/boge/modules/tickets/dto/TicketsDTO.java new file mode 100644 index 0000000..e69de29 diff --git a/base-fast/src/main/java/com/boge/modules/tickets/entity/TicketsEntity.java b/base-fast/src/main/java/com/boge/modules/tickets/entity/TicketsEntity.java index e967e84..5bd5c48 100644 --- a/base-fast/src/main/java/com/boge/modules/tickets/entity/TicketsEntity.java +++ b/base-fast/src/main/java/com/boge/modules/tickets/entity/TicketsEntity.java @@ -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; + } diff --git a/base-fast/src/main/java/com/boge/modules/tickets/enums/TicketsStatusEnums.java b/base-fast/src/main/java/com/boge/modules/tickets/enums/TicketsStatusEnums.java new file mode 100644 index 0000000..1d5f8f5 --- /dev/null +++ b/base-fast/src/main/java/com/boge/modules/tickets/enums/TicketsStatusEnums.java @@ -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; + } +} diff --git a/base-fast/src/main/resources/application.yml b/base-fast/src/main/resources/application.yml index 57f855e..3a3f419 100644 --- a/base-fast/src/main/resources/application.yml +++ b/base-fast/src/main/resources/application.yml @@ -84,3 +84,6 @@ file: maxSize: 100 avatarMaxSize: 5 +ProcessInstance: + defId: Process_1:2:05cb9af4-03a2-11f0-8846-e40d36456f42 + diff --git a/base-vue/package-lock.json b/base-vue/package-lock.json index 9b87f39..d1b0d04 100644 --- a/base-vue/package-lock.json +++ b/base-vue/package-lock.json @@ -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",