Przeglądaj źródła

投诉中加入工作流

wuxw 6 lat temu
rodzic
commit
d8838e5b58

+ 26 - 2
Api/src/main/java/com/java110/api/listener/complaint/SaveComplaintListener.java

@@ -3,6 +3,9 @@ package com.java110.api.listener.complaint;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
 import com.java110.api.listener.AbstractServiceApiListener;
 import com.java110.api.listener.AbstractServiceApiListener;
+import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.core.smo.complaint.IComplaintUserInnerServiceSMO;
+import com.java110.dto.complaint.ComplaintDto;
 import com.java110.utils.util.Assert;
 import com.java110.utils.util.Assert;
 import com.java110.core.context.DataFlowContext;
 import com.java110.core.context.DataFlowContext;
 import com.java110.entity.center.AppService;
 import com.java110.entity.center.AppService;
@@ -14,8 +17,11 @@ import com.java110.utils.constant.ServiceCodeComplaintConstant;
 
 
 
 
 import com.java110.core.annotation.Java110Listener;
 import com.java110.core.annotation.Java110Listener;
+import com.java110.utils.util.BeanConvertUtil;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.HttpMethod;
 import org.springframework.http.HttpMethod;
+import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.http.ResponseEntity;
 
 
 /**
 /**
@@ -24,6 +30,10 @@ import org.springframework.http.ResponseEntity;
  */
  */
 @Java110Listener("saveComplaintListener")
 @Java110Listener("saveComplaintListener")
 public class SaveComplaintListener extends AbstractServiceApiListener {
 public class SaveComplaintListener extends AbstractServiceApiListener {
+
+    @Autowired
+    private IComplaintUserInnerServiceSMO complaintUserInnerServiceSMOImpl;
+
     @Override
     @Override
     protected void validate(ServiceDataFlowEvent event, JSONObject reqJson) {
     protected void validate(ServiceDataFlowEvent event, JSONObject reqJson) {
         //Assert.hasKeyAndValue(reqJson, "xxx", "xxx");
         //Assert.hasKeyAndValue(reqJson, "xxx", "xxx");
@@ -57,6 +67,11 @@ public class SaveComplaintListener extends AbstractServiceApiListener {
 
 
         ResponseEntity<String> responseEntity = this.callService(context, service.getServiceCode(), paramInObj);
         ResponseEntity<String> responseEntity = this.callService(context, service.getServiceCode(), paramInObj);
 
 
+        if(HttpStatus.OK == responseEntity.getStatusCode()){
+            ComplaintDto complaintDto = BeanConvertUtil.covertBean(reqJson, ComplaintDto.class);
+            complaintUserInnerServiceSMOImpl.startProcess(complaintDto);
+        }
+
         context.setResponseEntity(responseEntity);
         context.setResponseEntity(responseEntity);
     }
     }
 
 
@@ -85,6 +100,8 @@ public class SaveComplaintListener extends AbstractServiceApiListener {
      */
      */
     private JSONObject addComplaint(JSONObject paramInJson, DataFlowContext dataFlowContext) {
     private JSONObject addComplaint(JSONObject paramInJson, DataFlowContext dataFlowContext) {
 
 
+        paramInJson.put("complaintId", GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_complaintId));
+        paramInJson.put("state", "10001");
 
 
         JSONObject business = JSONObject.parseObject("{\"datas\":{}}");
         JSONObject business = JSONObject.parseObject("{\"datas\":{}}");
         business.put(CommonConstant.HTTP_BUSINESS_TYPE_CD, BusinessTypeConstant.BUSINESS_TYPE_SAVE_COMPLAINT);
         business.put(CommonConstant.HTTP_BUSINESS_TYPE_CD, BusinessTypeConstant.BUSINESS_TYPE_SAVE_COMPLAINT);
@@ -92,11 +109,18 @@ public class SaveComplaintListener extends AbstractServiceApiListener {
         business.put(CommonConstant.HTTP_INVOKE_MODEL, CommonConstant.HTTP_INVOKE_MODEL_S);
         business.put(CommonConstant.HTTP_INVOKE_MODEL, CommonConstant.HTTP_INVOKE_MODEL_S);
         JSONObject businessComplaint = new JSONObject();
         JSONObject businessComplaint = new JSONObject();
         businessComplaint.putAll(paramInJson);
         businessComplaint.putAll(paramInJson);
-        businessComplaint.put("complaintId", "-1");
-        businessComplaint.put("state", "10001");
+        //businessComplaint.put("complaintId", "-1");
+        //businessComplaint.put("state", "10001");
         //计算 应收金额
         //计算 应收金额
         business.getJSONObject(CommonConstant.HTTP_BUSINESS_DATAS).put("businessComplaint", businessComplaint);
         business.getJSONObject(CommonConstant.HTTP_BUSINESS_DATAS).put("businessComplaint", businessComplaint);
         return business;
         return business;
     }
     }
 
 
+    public IComplaintUserInnerServiceSMO getComplaintUserInnerServiceSMOImpl() {
+        return complaintUserInnerServiceSMOImpl;
+    }
+
+    public void setComplaintUserInnerServiceSMOImpl(IComplaintUserInnerServiceSMO complaintUserInnerServiceSMOImpl) {
+        this.complaintUserInnerServiceSMOImpl = complaintUserInnerServiceSMOImpl;
+    }
 }
 }

+ 40 - 0
CommonService/src/main/java/com/java110/common/activity/complaint/ComplaintUserListener.java

@@ -0,0 +1,40 @@
+package com.java110.common.activity.complaint;
+
+import com.java110.core.smo.audit.IAuditUserInnerServiceSMO;
+import com.java110.dto.auditUser.AuditUserDto;
+import com.java110.dto.complaint.ComplaintDto;
+import com.java110.dto.resourceStore.ResourceOrderDto;
+import com.java110.entity.audit.AuditUser;
+import com.java110.utils.factory.ApplicationContextFactory;
+import com.java110.utils.util.BeanConvertUtil;
+import org.activiti.engine.delegate.DelegateTask;
+import org.activiti.engine.delegate.TaskListener;
+
+import java.util.List;
+
+/**
+ * 采购人员采购
+ */
+public class ComplaintUserListener implements TaskListener {
+
+    private IAuditUserInnerServiceSMO auditUserInnerServiceSMOImpl;
+
+    @Override
+    public void notify(DelegateTask delegateTask) {
+
+        auditUserInnerServiceSMOImpl = ApplicationContextFactory.getBean("auditUserInnerServiceSMOImpl", IAuditUserInnerServiceSMO.class);
+        AuditUserDto auditUserDto = new AuditUserDto();
+        ComplaintDto complaintDto = (ComplaintDto)delegateTask.getVariable("complaintDto");
+        auditUserDto.setStoreId(complaintDto.getStoreId());
+        auditUserDto.setObjCode("complaint");
+        auditUserDto.setAuditLink("809004");
+        List<AuditUserDto> auditUserDtos = auditUserInnerServiceSMOImpl.queryAuditUsers(auditUserDto);
+
+        for (AuditUserDto tmpAuditUser : auditUserDtos) {
+            AuditUser auditUser = BeanConvertUtil.covertBean(tmpAuditUser, AuditUser.class);
+
+            delegateTask.setVariable(auditUser.getUserId(), auditUser);
+
+        }
+    }
+}

+ 130 - 0
CommonService/src/main/java/com/java110/common/smo/impl/ComplaintUserInnerServiceSMOImpl.java

@@ -0,0 +1,130 @@
+package com.java110.common.smo.impl;
+
+
+import com.java110.core.base.smo.BaseServiceSMO;
+import com.java110.core.smo.complaint.IComplaintUserInnerServiceSMO;
+import com.java110.dto.PageDto;
+import com.java110.dto.complaint.ComplaintDto;
+import com.java110.entity.audit.AuditUser;
+import org.activiti.engine.ProcessEngine;
+import org.activiti.engine.RuntimeService;
+import org.activiti.engine.TaskService;
+import org.activiti.engine.runtime.ProcessInstance;
+import org.activiti.engine.task.Task;
+import org.activiti.engine.task.TaskQuery;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+//@Service("resourceEntryStoreSMOImpl")
+@RestController
+public class ComplaintUserInnerServiceSMOImpl extends BaseServiceSMO implements IComplaintUserInnerServiceSMO {
+
+    @Autowired
+    private ProcessEngine processEngine;
+
+    @Autowired
+    private RuntimeService runtimeService;
+
+    @Autowired
+    private TaskService taskService;
+
+
+    /**
+     * 启动流程
+     *
+     * @return
+     */
+    public ComplaintDto startProcess(@RequestBody ComplaintDto complaintDto) {
+        //将信息加入map,以便传入流程中
+        Map<String, Object> variables = new HashMap<String, Object>();
+        variables.put("complaintDto", complaintDto);
+        //开启流程
+        ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("complaint", variables);
+        //将得到的实例流程id值赋给之前设置的变量
+        String processInstanceId = processInstance.getId();
+        // System.out.println("流程开启成功.......实例流程id:" + processInstanceId);
+
+        complaintDto.setProcessInstanceId(processInstanceId);
+
+        return complaintDto;
+    }
+
+    /**
+     * 查询用户任务数
+     *
+     * @param user
+     * @return
+     */
+    public long getUserTaskCount(@RequestBody AuditUser user) {
+        TaskService taskService = processEngine.getTaskService();
+        TaskQuery query = taskService.createTaskQuery();
+        query.taskAssignee(user.getUserId());
+        return query.count();
+    }
+
+    /**
+     * 获取用户任务
+     *
+     * @param user 用户信息
+     */
+    public List<ComplaintDto> getUserTasks(@RequestBody AuditUser user) {
+        TaskService taskService = processEngine.getTaskService();
+        TaskQuery query = taskService.createTaskQuery();
+        query.taskAssignee(user.getUserId());
+        query.orderByTaskCreateTime().desc();
+        List<Task> list = null;
+        if (user.getPage() != PageDto.DEFAULT_PAGE) {
+            list = query.listPage(user.getPage(), user.getRow());
+        }else{
+            list = query.list();
+        }
+
+        List<ComplaintDto> complaintDtos = new ArrayList<>();
+
+        for (Task task : list) {
+            String id = task.getId();
+            //System.out.println("tasks:" + JSONObject.toJSONString(task));
+            ComplaintDto complaintDto = (ComplaintDto) taskService.getVariable(id, "complaintDto");
+            complaintDto.setTaskId(id);
+            complaintDtos.add(complaintDto);
+        }
+        return complaintDtos;
+    }
+
+    public boolean agreeCompleteTask(@RequestBody ComplaintDto complaintDto) {
+        TaskService taskService = processEngine.getTaskService();
+        Map<String, Object> variables = new HashMap<String, Object>();
+        variables.put("auditCode", complaintDto.getAuditCode());
+        taskService.complete(complaintDto.getTaskId(), variables);
+        return true;
+    }
+
+    public boolean refuteCompleteTask(@RequestBody ComplaintDto complaintDto) {
+        TaskService taskService = processEngine.getTaskService();
+        Map<String, Object> variables = new HashMap<String, Object>();
+        variables.put("auditCode", complaintDto.getAuditCode());
+        taskService.complete(complaintDto.getTaskId(), variables);
+        return true;
+    }
+
+    /**
+     * 审核 当前任务
+     *
+     * @param complaintDto 资源订单
+     * @return
+     */
+    public boolean complete(@RequestBody ComplaintDto complaintDto) {
+        TaskService taskService = processEngine.getTaskService();
+
+        taskService.complete(complaintDto.getTaskId());
+        return true;
+    }
+
+
+}

Plik diff jest za duży
+ 50 - 0
CommonService/src/main/resources/processes/complaint.bpmn


+ 41 - 0
java110-bean/src/main/java/com/java110/dto/complaint/ComplaintDto.java

@@ -14,6 +14,10 @@ import java.util.Date;
  * add by wuxw 2019/4/24
  * add by wuxw 2019/4/24
  **/
  **/
 public class ComplaintDto extends PageDto implements Serializable {
 public class ComplaintDto extends PageDto implements Serializable {
+    //工作流实例ID
+    private String processInstanceId;
+
+    private String taskId;
 
 
     private String complaintId;
     private String complaintId;
     private String typeCd;
     private String typeCd;
@@ -30,6 +34,11 @@ public class ComplaintDto extends PageDto implements Serializable {
     private String floorNum;
     private String floorNum;
     private String communityId;
     private String communityId;
 
 
+    //
+    private String auditCode;
+
+    private String auditMessage;
+
 
 
     private Date createTime;
     private Date createTime;
 
 
@@ -164,4 +173,36 @@ public class ComplaintDto extends PageDto implements Serializable {
     public void setTypeCdName(String typeCdName) {
     public void setTypeCdName(String typeCdName) {
         this.typeCdName = typeCdName;
         this.typeCdName = typeCdName;
     }
     }
+
+    public String getProcessInstanceId() {
+        return processInstanceId;
+    }
+
+    public void setProcessInstanceId(String processInstanceId) {
+        this.processInstanceId = processInstanceId;
+    }
+
+    public String getTaskId() {
+        return taskId;
+    }
+
+    public void setTaskId(String taskId) {
+        this.taskId = taskId;
+    }
+
+    public String getAuditCode() {
+        return auditCode;
+    }
+
+    public void setAuditCode(String auditCode) {
+        this.auditCode = auditCode;
+    }
+
+    public String getAuditMessage() {
+        return auditMessage;
+    }
+
+    public void setAuditMessage(String auditMessage) {
+        this.auditMessage = auditMessage;
+    }
 }
 }

+ 57 - 0
java110-core/src/main/java/com/java110/core/smo/complaint/IComplaintUserInnerServiceSMO.java

@@ -0,0 +1,57 @@
+package com.java110.core.smo.complaint;
+
+import com.java110.core.feign.FeignConfiguration;
+import com.java110.dto.complaint.ComplaintDto;
+import com.java110.entity.audit.AuditUser;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+
+import java.util.List;
+
+@FeignClient(name = "common-service", configuration = {FeignConfiguration.class})
+@RequestMapping("/complaintUserApi")
+public interface IComplaintUserInnerServiceSMO {
+
+    /**
+     * 启动流程
+     *
+     * @return
+     */
+    @RequestMapping(value = "/startProcess", method = RequestMethod.POST)
+    public ComplaintDto startProcess(@RequestBody ComplaintDto complaintDto);
+
+    /**
+     * 查询用户任务数
+     *
+     * @param user
+     * @return
+     */
+    @RequestMapping(value = "/getUserTaskCount", method = RequestMethod.POST)
+    public long getUserTaskCount(@RequestBody AuditUser user);
+
+    /**
+     * 获取用户任务
+     *
+     * @param user 用户信息
+     */
+    @RequestMapping(value = "/getUserTasks", method = RequestMethod.POST)
+    public List<ComplaintDto> getUserTasks(@RequestBody AuditUser user);
+
+
+    @RequestMapping(value = "/agreeCompleteTask", method = RequestMethod.POST)
+    public boolean agreeCompleteTask(@RequestBody ComplaintDto complaintDto);
+
+    @RequestMapping(value = "/refuteCompleteTask", method = RequestMethod.POST)
+    public boolean refuteCompleteTask(@RequestBody ComplaintDto complaintDto);
+
+    /**
+     * 审核 当前任务
+     *
+     * @param complaintDto 资源订单
+     * @return
+     */
+    @RequestMapping(value = "/complete", method = RequestMethod.POST)
+    public boolean complete(@RequestBody ComplaintDto complaintDto);
+}