java110-bean/src/main/java/com/java110/dto/contract/ContractDto.java
@@ -37,6 +37,7 @@ private String bLink; private String partyB; private String contractId; private String[] contractIds; private String objId; private String contractName; private String startTime; @@ -58,6 +59,17 @@ private String parentContractCode; private String parentContractName; private String currentUserId; private String processInstanceId; private String taskId; private String auditCode; private String auditMessage; private String staffId; private String staffName; private String staffTel; private String startUserId; private List<ContractAttrDto> attrs; @@ -300,4 +312,84 @@ public void setParentContractName(String parentContractName) { this.parentContractName = parentContractName; } public String getCurrentUserId() { return currentUserId; } public void setCurrentUserId(String currentUserId) { this.currentUserId = currentUserId; } 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; } public String getStaffId() { return staffId; } public void setStaffId(String staffId) { this.staffId = staffId; } public String getStaffName() { return staffName; } public void setStaffName(String staffName) { this.staffName = staffName; } public String getStaffTel() { return staffTel; } public void setStaffTel(String staffTel) { this.staffTel = staffTel; } public String getStartUserId() { return startUserId; } public void setStartUserId(String startUserId) { this.startUserId = startUserId; } public String[] getContractIds() { return contractIds; } public void setContractIds(String[] contractIds) { this.contractIds = contractIds; } } java110-bean/src/main/java/com/java110/dto/contractChangePlan/ContractChangePlanDto.java
@@ -23,6 +23,7 @@ private String planTypeName; private String contractId; private String planId; private String[] planIds; private String remark; private String changePerson; private String changePersonName; @@ -33,6 +34,8 @@ private Date createTime; private String statusCd = "0"; public String getPlanType() { @@ -123,4 +126,12 @@ public void setChangePersonName(String changePersonName) { this.changePersonName = changePersonName; } public String[] getPlanIds() { return planIds; } public void setPlanIds(String[] planIds) { this.planIds = planIds; } } java110-bean/src/main/java/com/java110/po/contractChangePlan/ContractChangePlanPo.java
@@ -77,5 +77,4 @@ this.storeId = storeId; } } java110-db/src/main/resources/mapper/store/ContractChangePlanServiceDaoImplMapper.xml
@@ -42,6 +42,12 @@ <if test="planId !=null and planId != ''"> and t.plan_id= #{planId} </if> <if test="planIds !=null"> and t.plan_id in <foreach collection="planIds" item="item" index="index" open="(" close=")" separator=","> #{item} </foreach> </if> <if test="remark !=null and remark != ''"> and t.remark= #{remark} </if> java110-db/src/main/resources/mapper/store/ContractServiceDaoImplMapper.xml
@@ -74,6 +74,12 @@ <if test="contractId !=null and contractId != ''"> and t.contract_id= #{contractId} </if> <if test="contractIds !=null"> and t.contract_id in <foreach collection="contractIds" item="item" index="index" open="(" close=")" separator=","> #{item} </foreach> </if> <if test="objId !=null and objId != ''"> and t.obj_id= #{objId} </if> java110-interface/src/main/java/com/java110/intf/common/IContractApplyUserInnerServiceSMO.java
New file @@ -0,0 +1,86 @@ package com.java110.intf.common; import com.java110.config.feign.FeignConfiguration; import com.java110.dto.auditMessage.AuditMessageDto; import com.java110.dto.contract.ContractDto; import com.java110.dto.purchaseApply.PurchaseApplyDto; 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("/contractApplyUserApi") public interface IContractApplyUserInnerServiceSMO { /** * <p>启动流程</p> * * * @return CommunityDto 对象数据 */ @RequestMapping(value = "/startProcess", method = RequestMethod.POST) public ContractDto startProcess(@RequestBody ContractDto contractDto); /** * 查询用户任务数 * @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<ContractDto> getUserTasks(@RequestBody AuditUser user); /** * 同意 * @param contractDto * @return */ @RequestMapping(value = "/agreeCompleteTask", method = RequestMethod.POST) public boolean agreeCompleteTask(@RequestBody ContractDto contractDto); /** * 反驳 * @param contractDto * @return */ @RequestMapping(value = "/refuteCompleteTask", method = RequestMethod.POST) public boolean refuteCompleteTask(@RequestBody ContractDto contractDto); /** * 完成任务 * @param contractDto */ @RequestMapping(value = "/complete", method = RequestMethod.GET) public boolean complete(@RequestBody ContractDto contractDto); /** * 查询用户任务数 * * @param user * @return */ @RequestMapping(value = "/getUserHistoryTaskCount", method = RequestMethod.POST) public long getUserHistoryTaskCount(@RequestBody AuditUser user); /** * 获取用户审批的任务 * * @param user 用户信息 */ @RequestMapping(value = "/getUserHistoryTasks", method = RequestMethod.POST) public List<ContractDto> getUserHistoryTasks(@RequestBody AuditUser user); } java110-interface/src/main/java/com/java110/intf/common/IContractChangeUserInnerServiceSMO.java
New file @@ -0,0 +1,88 @@ package com.java110.intf.common; import com.java110.config.feign.FeignConfiguration; import com.java110.dto.contractChangePlan.ContractChangePlanDto; 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("/contractChangeUserApi") public interface IContractChangeUserInnerServiceSMO { /** * <p>启动流程</p> * * @return CommunityDto 对象数据 */ @RequestMapping(value = "/startProcess", method = RequestMethod.POST) public ContractChangePlanDto startProcess(@RequestBody ContractChangePlanDto contractChangePlanDto); /** * 查询用户任务数 * * @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<ContractChangePlanDto> getUserTasks(@RequestBody AuditUser user); /** * 同意 * * @param contractChangePlanDto * @return */ @RequestMapping(value = "/agreeCompleteTask", method = RequestMethod.POST) public boolean agreeCompleteTask(@RequestBody ContractChangePlanDto contractChangePlanDto); /** * 反驳 * * @param contractChangePlanDto * @return */ @RequestMapping(value = "/refuteCompleteTask", method = RequestMethod.POST) public boolean refuteCompleteTask(@RequestBody ContractChangePlanDto contractChangePlanDto); /** * 完成任务 * * @param contractChangePlanDto */ @RequestMapping(value = "/complete", method = RequestMethod.GET) public boolean complete(@RequestBody ContractChangePlanDto contractChangePlanDto); /** * 查询用户任务数 * * @param user * @return */ @RequestMapping(value = "/getUserHistoryTaskCount", method = RequestMethod.POST) public long getUserHistoryTaskCount(@RequestBody AuditUser user); /** * 获取用户审批的任务 * * @param user 用户信息 */ @RequestMapping(value = "/getUserHistoryTasks", method = RequestMethod.POST) public List<ContractChangePlanDto> getUserHistoryTasks(@RequestBody AuditUser user); } service-api/src/main/java/com/java110/api/listener/workflow/UpdateWorkflowListener.java
@@ -117,7 +117,10 @@ if (reqJson.containsKey("flowType")) { String flowType = reqJson.getString("flowType"); if (WorkflowDto.FLOW_TYPE_PURCHASE.equals(flowType) || WorkflowDto.FLOW_TYPE_COLLECTION.equals(flowType)) { if (WorkflowDto.FLOW_TYPE_PURCHASE.equals(flowType) || WorkflowDto.FLOW_TYPE_COLLECTION.equals(flowType) || WorkflowDto.FLOW_TYPE_CONTRACT_CHANGE.equals(flowType) || WorkflowDto.FLOW_TYPE_CONTRACT_APPLY.equals(flowType)) { reqJson.put("communityId", "9999"); } } service-common/src/main/java/com/java110/common/smo/impl/ContractApplyUserInnerServiceSMOImpl.java
New file @@ -0,0 +1,262 @@ package com.java110.common.smo.impl; import com.java110.core.base.smo.BaseServiceSMO; import com.java110.dto.PageDto; import com.java110.dto.contract.ContractDto; import com.java110.dto.workflow.WorkflowDto; import com.java110.entity.audit.AuditUser; import com.java110.intf.common.IContractApplyUserInnerServiceSMO; import com.java110.intf.common.IWorkflowInnerServiceSMO; import com.java110.intf.store.IContractInnerServiceSMO; import com.java110.utils.util.Assert; import com.java110.utils.util.StringUtil; import org.activiti.engine.HistoryService; import org.activiti.engine.ProcessEngine; import org.activiti.engine.RuntimeService; import org.activiti.engine.TaskService; import org.activiti.engine.history.HistoricProcessInstance; import org.activiti.engine.history.HistoricTaskInstance; import org.activiti.engine.history.HistoricTaskInstanceQuery; import org.activiti.engine.query.Query; 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 ContractApplyUserInnerServiceSMOImpl extends BaseServiceSMO implements IContractApplyUserInnerServiceSMO { @Autowired private ProcessEngine processEngine; @Autowired private RuntimeService runtimeService; @Autowired private TaskService taskService; @Autowired private IContractInnerServiceSMO contractInnerServiceSMOImpl; @Autowired private IWorkflowInnerServiceSMO workflowInnerServiceSMOImpl; /** * 启动流程 * * @return */ public ContractDto startProcess(@RequestBody ContractDto contractDto) { //将信息加入map,以便传入流程中 Map<String, Object> variables = new HashMap<String, Object>(); variables.put("contractDto", contractDto); //开启流程 ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(getWorkflowDto(contractDto.getStoreId()), variables); //将得到的实例流程id值赋给之前设置的变量 String processInstanceId = processInstance.getId(); // System.out.println("流程开启成功.......实例流程id:" + processInstanceId); contractDto.setProcessInstanceId(processInstanceId); return contractDto; } /** * 查询用户任务数 * * @param user * @return */ public long getUserTaskCount(@RequestBody AuditUser user) { TaskService taskService = processEngine.getTaskService(); TaskQuery query = taskService.createTaskQuery().processDefinitionKey(getWorkflowDto(user.getStoreId())); query.taskAssignee(user.getUserId()); return query.count(); } /** * 获取用户任务 * * @param user 用户信息 */ public List<ContractDto> getUserTasks(@RequestBody AuditUser user) { TaskService taskService = processEngine.getTaskService(); TaskQuery query = taskService.createTaskQuery().processDefinitionKey(getWorkflowDto(user.getStoreId())); query.taskAssignee(user.getUserId()); query.orderByTaskCreateTime().desc(); List<Task> list = null; if (user.getPage() >= 1) { user.setPage(user.getPage() - 1); } if (user.getPage() != PageDto.DEFAULT_PAGE) { list = query.listPage(user.getPage(), user.getRow()); } else { list = query.list(); } List<String> contractIds = new ArrayList<>(); Map<String, String> taskBusinessKeyMap = new HashMap<>(); for (Task task : list) { String processInstanceId = task.getProcessInstanceId(); //3.使用流程实例,查询 ProcessInstance pi = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult(); //4.使用流程实例对象获取BusinessKey String business_key = pi.getBusinessKey(); contractIds.add(business_key); taskBusinessKeyMap.put(business_key, task.getId()); } if (contractIds == null || contractIds.size() == 0) { return new ArrayList<>(); } //查询 投诉信息 ContractDto contractDto = new ContractDto(); contractDto.setStoreId(user.getStoreId()); contractDto.setContractIds(contractIds.toArray(new String[contractIds.size()])); List<ContractDto> tmpContractDtos = contractInnerServiceSMOImpl.queryContracts(contractDto); for (ContractDto tmpContractDto : tmpContractDtos) { tmpContractDto.setTaskId(taskBusinessKeyMap.get(tmpContractDto.getContractId())); } return tmpContractDtos; } public boolean agreeCompleteTask(@RequestBody ContractDto contractDto) { TaskService taskService = processEngine.getTaskService(); Map<String, Object> variables = new HashMap<String, Object>(); variables.put("auditCode", contractDto.getAuditCode()); taskService.complete(contractDto.getTaskId(), variables); return true; } public boolean refuteCompleteTask(@RequestBody ContractDto contractDto) { TaskService taskService = processEngine.getTaskService(); Map<String, Object> variables = new HashMap<String, Object>(); variables.put("auditCode", contractDto.getAuditCode()); taskService.complete(contractDto.getTaskId(), variables); return true; } /** * 审核 当前任务 * * @param contractDto 资源订单 * @return */ public boolean complete(@RequestBody ContractDto contractDto) { TaskService taskService = processEngine.getTaskService(); taskService.complete(contractDto.getTaskId()); return true; } private String getWorkflowDto(String storeId) { //开启流程 //WorkflowDto.DEFAULT_PROCESS + workflowDto.getFlowId() WorkflowDto workflowDto = new WorkflowDto(); workflowDto.setFlowType(WorkflowDto.FLOW_TYPE_CONTRACT_APPLY); workflowDto.setStoreId(storeId); List<WorkflowDto> workflowDtos = workflowInnerServiceSMOImpl.queryWorkflows(workflowDto); Assert.listOnlyOne(workflowDtos, "未找到 投诉建议流程或找到多条,请在物业账号系统管理下流程管理中配置流程"); WorkflowDto tmpWorkflowDto = workflowDtos.get(0); if (StringUtil.isEmpty(tmpWorkflowDto.getProcessDefinitionKey())) { throw new IllegalArgumentException("合同起草续签流程还未部署"); } return WorkflowDto.DEFAULT_PROCESS + tmpWorkflowDto.getFlowId(); } /** * 查询用户任务数 * * @param user * @return */ public long getUserHistoryTaskCount(@RequestBody AuditUser user) { HistoryService historyService = processEngine.getHistoryService(); // Query query = historyService.createHistoricTaskInstanceQuery() // .processDefinitionKey("complaint") // .taskAssignee(user.getUserId()); HistoricTaskInstanceQuery historicTaskInstanceQuery = historyService.createHistoricTaskInstanceQuery() .processDefinitionKey(getWorkflowDto(user.getStoreId())) .taskAssignee(user.getUserId()) .finished(); if (!StringUtil.isEmpty(user.getAuditLink()) && "START".equals(user.getAuditLink())) { historicTaskInstanceQuery.taskName("complaint"); } else if (!StringUtil.isEmpty(user.getAuditLink()) && "AUDIT".equals(user.getAuditLink())) { historicTaskInstanceQuery.taskName("complaitDealUser"); } Query query = historicTaskInstanceQuery; return query.count(); } /** * 获取用户审批的任务 * * @param user 用户信息 */ public List<ContractDto> getUserHistoryTasks(@RequestBody AuditUser user) { HistoryService historyService = processEngine.getHistoryService(); HistoricTaskInstanceQuery historicTaskInstanceQuery = historyService.createHistoricTaskInstanceQuery() .processDefinitionKey(getWorkflowDto(user.getStoreId())) .taskAssignee(user.getUserId()) .finished(); // if (!StringUtil.isEmpty(user.getAuditLink()) && "START".equals(user.getAuditLink())) { // historicTaskInstanceQuery.taskName("complaint"); // } else if (!StringUtil.isEmpty(user.getAuditLink()) && "AUDIT".equals(user.getAuditLink())) { // historicTaskInstanceQuery.taskName("complaitDealUser"); // } Query query = historicTaskInstanceQuery.orderByHistoricTaskInstanceStartTime().desc(); List<HistoricTaskInstance> list = null; if (user.getPage() != PageDto.DEFAULT_PAGE) { list = query.listPage((user.getPage() - 1) * user.getRow(), user.getRow()); } else { list = query.list(); } List<String> contractIds = new ArrayList<>(); Map<String, String> taskBusinessKeyMap = new HashMap<>(); for (HistoricTaskInstance task : list) { String processInstanceId = task.getProcessInstanceId(); //3.使用流程实例,查询 HistoricProcessInstance pi = historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).singleResult(); //4.使用流程实例对象获取BusinessKey String business_key = pi.getBusinessKey(); contractIds.add(business_key); taskBusinessKeyMap.put(business_key, task.getId()); } //查询 投诉信息 ContractDto contractDto = new ContractDto(); contractDto.setStoreId(user.getStoreId()); contractDto.setContractIds(contractIds.toArray(new String[contractIds.size()])); List<ContractDto> tmpContractDtos = contractInnerServiceSMOImpl.queryContracts(contractDto); for (ContractDto tmpContractDto : tmpContractDtos) { tmpContractDto.setTaskId(taskBusinessKeyMap.get(tmpContractDto.getContractId())); } return tmpContractDtos; } } service-common/src/main/java/com/java110/common/smo/impl/ContractChangeUserInnerServiceSMOImpl.java
New file @@ -0,0 +1,262 @@ package com.java110.common.smo.impl; import com.java110.core.base.smo.BaseServiceSMO; import com.java110.dto.PageDto; import com.java110.dto.contractChangePlan.ContractChangePlanDto; import com.java110.dto.workflow.WorkflowDto; import com.java110.entity.audit.AuditUser; import com.java110.intf.common.IContractChangeUserInnerServiceSMO; import com.java110.intf.common.IWorkflowInnerServiceSMO; import com.java110.intf.store.IContractChangePlanInnerServiceSMO; import com.java110.utils.util.Assert; import com.java110.utils.util.StringUtil; import org.activiti.engine.HistoryService; import org.activiti.engine.ProcessEngine; import org.activiti.engine.RuntimeService; import org.activiti.engine.TaskService; import org.activiti.engine.history.HistoricProcessInstance; import org.activiti.engine.history.HistoricTaskInstance; import org.activiti.engine.history.HistoricTaskInstanceQuery; import org.activiti.engine.query.Query; 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 ContractChangeUserInnerServiceSMOImpl extends BaseServiceSMO implements IContractChangeUserInnerServiceSMO { @Autowired private ProcessEngine processEngine; @Autowired private RuntimeService runtimeService; @Autowired private TaskService taskService; @Autowired private IContractChangePlanInnerServiceSMO contractChangePlanInnerServiceSMOImpl; @Autowired private IWorkflowInnerServiceSMO workflowInnerServiceSMOImpl; /** * 启动流程 * * @return */ public ContractChangePlanDto startProcess(@RequestBody ContractChangePlanDto contractChangePlanDto) { //将信息加入map,以便传入流程中 Map<String, Object> variables = new HashMap<String, Object>(); variables.put("contractChangePlanDto", contractChangePlanDto); //开启流程 ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(getWorkflowDto(contractChangePlanDto.getStoreId()), variables); //将得到的实例流程id值赋给之前设置的变量 String processInstanceId = processInstance.getId(); // System.out.println("流程开启成功.......实例流程id:" + processInstanceId); contractChangePlanDto.setProcessInstanceId(processInstanceId); return contractChangePlanDto; } /** * 查询用户任务数 * * @param user * @return */ public long getUserTaskCount(@RequestBody AuditUser user) { TaskService taskService = processEngine.getTaskService(); TaskQuery query = taskService.createTaskQuery().processDefinitionKey(getWorkflowDto(user.getStoreId())); query.taskAssignee(user.getUserId()); return query.count(); } /** * 获取用户任务 * * @param user 用户信息 */ public List<ContractChangePlanDto> getUserTasks(@RequestBody AuditUser user) { TaskService taskService = processEngine.getTaskService(); TaskQuery query = taskService.createTaskQuery().processDefinitionKey(getWorkflowDto(user.getStoreId())); query.taskAssignee(user.getUserId()); query.orderByTaskCreateTime().desc(); List<Task> list = null; if (user.getPage() >= 1) { user.setPage(user.getPage() - 1); } if (user.getPage() != PageDto.DEFAULT_PAGE) { list = query.listPage(user.getPage(), user.getRow()); } else { list = query.list(); } List<String> contractIds = new ArrayList<>(); Map<String, String> taskBusinessKeyMap = new HashMap<>(); for (Task task : list) { String processInstanceId = task.getProcessInstanceId(); //3.使用流程实例,查询 ProcessInstance pi = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult(); //4.使用流程实例对象获取BusinessKey String business_key = pi.getBusinessKey(); contractIds.add(business_key); taskBusinessKeyMap.put(business_key, task.getId()); } if (contractIds == null || contractIds.size() == 0) { return new ArrayList<>(); } //查询 投诉信息 ContractChangePlanDto contractChangePlanDto = new ContractChangePlanDto(); contractChangePlanDto.setStoreId(user.getStoreId()); contractChangePlanDto.setPlanIds(contractIds.toArray(new String[contractIds.size()])); List<ContractChangePlanDto> tmpContractChangePlanDtos = contractChangePlanInnerServiceSMOImpl.queryContractChangePlans(contractChangePlanDto); for (ContractChangePlanDto tmpContractChangePlanDto : tmpContractChangePlanDtos) { tmpContractChangePlanDto.setTaskId(taskBusinessKeyMap.get(tmpContractChangePlanDto.getContractId())); } return tmpContractChangePlanDtos; } public boolean agreeCompleteTask(@RequestBody ContractChangePlanDto contractChangePlanDto) { TaskService taskService = processEngine.getTaskService(); Map<String, Object> variables = new HashMap<String, Object>(); variables.put("auditCode", contractChangePlanDto.getAuditCode()); taskService.complete(contractChangePlanDto.getTaskId(), variables); return true; } public boolean refuteCompleteTask(@RequestBody ContractChangePlanDto contractChangePlanDto) { TaskService taskService = processEngine.getTaskService(); Map<String, Object> variables = new HashMap<String, Object>(); variables.put("auditCode", contractChangePlanDto.getAuditCode()); taskService.complete(contractChangePlanDto.getTaskId(), variables); return true; } /** * 审核 当前任务 * * @param contractChangePlanDto 资源订单 * @return */ public boolean complete(@RequestBody ContractChangePlanDto contractChangePlanDto) { TaskService taskService = processEngine.getTaskService(); taskService.complete(contractChangePlanDto.getTaskId()); return true; } private String getWorkflowDto(String storeId) { //开启流程 //WorkflowDto.DEFAULT_PROCESS + workflowDto.getFlowId() WorkflowDto workflowDto = new WorkflowDto(); workflowDto.setFlowType(WorkflowDto.FLOW_TYPE_CONTRACT_CHANGE); workflowDto.setStoreId(storeId); List<WorkflowDto> workflowDtos = workflowInnerServiceSMOImpl.queryWorkflows(workflowDto); Assert.listOnlyOne(workflowDtos, "未找到 合同变更流程或找到多条,请在物业账号系统管理下流程管理中配置流程"); WorkflowDto tmpWorkflowDto = workflowDtos.get(0); if (StringUtil.isEmpty(tmpWorkflowDto.getProcessDefinitionKey())) { throw new IllegalArgumentException("合同变更流程还未部署"); } return WorkflowDto.DEFAULT_PROCESS + tmpWorkflowDto.getFlowId(); } /** * 查询用户任务数 * * @param user * @return */ public long getUserHistoryTaskCount(@RequestBody AuditUser user) { HistoryService historyService = processEngine.getHistoryService(); // Query query = historyService.createHistoricTaskInstanceQuery() // .processDefinitionKey("complaint") // .taskAssignee(user.getUserId()); HistoricTaskInstanceQuery historicTaskInstanceQuery = historyService.createHistoricTaskInstanceQuery() .processDefinitionKey(getWorkflowDto(user.getStoreId())) .taskAssignee(user.getUserId()) .finished(); if (!StringUtil.isEmpty(user.getAuditLink()) && "START".equals(user.getAuditLink())) { historicTaskInstanceQuery.taskName("complaint"); } else if (!StringUtil.isEmpty(user.getAuditLink()) && "AUDIT".equals(user.getAuditLink())) { historicTaskInstanceQuery.taskName("complaitDealUser"); } Query query = historicTaskInstanceQuery; return query.count(); } /** * 获取用户审批的任务 * * @param user 用户信息 */ public List<ContractChangePlanDto> getUserHistoryTasks(@RequestBody AuditUser user) { HistoryService historyService = processEngine.getHistoryService(); HistoricTaskInstanceQuery historicTaskInstanceQuery = historyService.createHistoricTaskInstanceQuery() .processDefinitionKey(getWorkflowDto(user.getStoreId())) .taskAssignee(user.getUserId()) .finished(); // if (!StringUtil.isEmpty(user.getAuditLink()) && "START".equals(user.getAuditLink())) { // historicTaskInstanceQuery.taskName("complaint"); // } else if (!StringUtil.isEmpty(user.getAuditLink()) && "AUDIT".equals(user.getAuditLink())) { // historicTaskInstanceQuery.taskName("complaitDealUser"); // } Query query = historicTaskInstanceQuery.orderByHistoricTaskInstanceStartTime().desc(); List<HistoricTaskInstance> list = null; if (user.getPage() != PageDto.DEFAULT_PAGE) { list = query.listPage((user.getPage() - 1) * user.getRow(), user.getRow()); } else { list = query.list(); } List<String> planIds = new ArrayList<>(); Map<String, String> taskBusinessKeyMap = new HashMap<>(); for (HistoricTaskInstance task : list) { String processInstanceId = task.getProcessInstanceId(); //3.使用流程实例,查询 HistoricProcessInstance pi = historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).singleResult(); //4.使用流程实例对象获取BusinessKey String business_key = pi.getBusinessKey(); planIds.add(business_key); taskBusinessKeyMap.put(business_key, task.getId()); } //查询 投诉信息 ContractChangePlanDto contractChangePlanDto = new ContractChangePlanDto(); contractChangePlanDto.setStoreId(user.getStoreId()); contractChangePlanDto.setPlanIds(planIds.toArray(new String[planIds.size()])); List<ContractChangePlanDto> tmpContractChangePlanDtos = contractChangePlanInnerServiceSMOImpl.queryContractChangePlans(contractChangePlanDto); for (ContractChangePlanDto tmpContractChangePlanDto : tmpContractChangePlanDtos) { tmpContractChangePlanDto.setTaskId(taskBusinessKeyMap.get(tmpContractChangePlanDto.getContractId())); } return tmpContractChangePlanDtos; } } service-common/src/main/java/com/java110/common/smo/impl/PurchaseApplyUserInnerServiceSMOImpl.java
@@ -103,7 +103,7 @@ WorkflowDto tmpWorkflowDto = workflowDtos.get(0); if (StringUtil.isEmpty(tmpWorkflowDto.getProcessDefinitionKey())) { throw new IllegalArgumentException("流程还未部署"); throw new IllegalArgumentException("采购流程还未部署"); } return WorkflowDto.DEFAULT_PROCESS + tmpWorkflowDto.getFlowId(); } service-store/src/main/java/com/java110/store/api/ContractApi.java
@@ -157,7 +157,9 @@ * @path /app/contract/saveContract */ @RequestMapping(value = "/saveContract", method = RequestMethod.POST) public ResponseEntity<String> saveContract(@RequestBody JSONObject reqJson, @RequestHeader(value = "store-id") String storeId) { public ResponseEntity<String> saveContract(@RequestBody JSONObject reqJson, @RequestHeader(value = "store-id") String storeId, @RequestHeader(value = "user-id") String userId) { Assert.hasKeyAndValue(reqJson, "contractCode", "请求报文中未包含contractCode"); Assert.hasKeyAndValue(reqJson, "contractName", "请求报文中未包含contractName"); @@ -179,6 +181,7 @@ if (!reqJson.containsKey("contractParentId") || "-1".equals(reqJson.getString("contractParentId"))) { contractPo.setContractParentId("-1"); } reqJson.put("userId",userId); return saveContractBMOImpl.save(contractPo, reqJson); } @@ -657,6 +660,7 @@ ContractChangePlanPo contractChangePlanPo = BeanConvertUtil.covertBean(reqJson, ContractChangePlanPo.class); contractChangePlanPo.setStoreId(storeId); contractChangePlanPo.setChangePerson(userId); contractChangePlanPo.setState(ContractChangePlanDto.STATE_W); contractChangePlanPo.setRemark(reqJson.getString("changeRemark")); service-store/src/main/java/com/java110/store/bmo/contract/impl/SaveContractBMOImpl.java
@@ -7,8 +7,10 @@ import com.java110.dto.contract.ContractDto; import com.java110.dto.contractType.ContractTypeDto; import com.java110.dto.fee.FeeDto; import com.java110.dto.purchaseApply.PurchaseApplyDto; import com.java110.dto.rentingPool.RentingPoolDto; import com.java110.dto.store.StoreDto; import com.java110.intf.common.IContractApplyUserInnerServiceSMO; import com.java110.intf.store.IContractAttrInnerServiceSMO; import com.java110.intf.store.IContractInnerServiceSMO; import com.java110.intf.store.IContractTypeInnerServiceSMO; @@ -18,6 +20,7 @@ import com.java110.po.rentingPool.RentingPoolPo; import com.java110.store.bmo.contract.ISaveContractBMO; import com.java110.utils.util.Assert; import com.java110.utils.util.BeanConvertUtil; import com.java110.utils.util.StringUtil; import com.java110.vo.ResultVo; import org.springframework.beans.factory.annotation.Autowired; @@ -40,6 +43,9 @@ @Autowired private IRentingPoolInnerServiceSMO rentingPoolInnerServiceSMOImpl; // 房屋租赁 @Autowired private IContractApplyUserInnerServiceSMO contractApplyUserInnerServiceSMOImpl; /** * 添加小区信息 @@ -75,14 +81,20 @@ throw new IllegalArgumentException("合同" + "[" + contractPo.getContractCode() + "]已存在"); } contractPo.setContractId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_contractId)); int flag = contractInnerServiceSMOImpl.saveContract(contractPo); if (flag < 0) { return ResultVo.createResponseEntity(ResultVo.CODE_ERROR, "保存失败"); } //提交流程 ContractDto tmpContractDto = BeanConvertUtil.covertBean(contractPo, ContractDto.class); tmpContractDto.setCurrentUserId(reqJson.getString("userId")); contractApplyUserInnerServiceSMOImpl.startProcess(tmpContractDto); if (StoreDto.STORE_ADMIN.equals(contractPo.getStoreId())) { noticeRentUpdateState(contractPo, audit); } service-store/src/main/java/com/java110/store/bmo/contractChangePlan/impl/SaveContractChangePlanBMOImpl.java
@@ -3,6 +3,8 @@ import com.java110.core.annotation.Java110Transactional; import com.java110.core.factory.GenerateCodeFactory; import com.java110.dto.contract.ContractDto; import com.java110.dto.contractChangePlan.ContractChangePlanDto; import com.java110.intf.common.IContractChangeUserInnerServiceSMO; import com.java110.intf.store.IContractChangePlanDetailInnerServiceSMO; import com.java110.intf.store.IContractChangePlanInnerServiceSMO; import com.java110.intf.store.IContractInnerServiceSMO; @@ -29,6 +31,9 @@ @Autowired private IContractInnerServiceSMO contractInnerServiceSMOImpl; @Autowired private IContractChangeUserInnerServiceSMO contractChangeUserInnerServiceSMO; /** * 添加小区信息 @@ -71,6 +76,11 @@ throw new IllegalArgumentException("保存变更记录失败"); } //提交流程 ContractChangePlanDto contractChangePlanDto = BeanConvertUtil.covertBean(contractChangePlanPo, ContractChangePlanDto.class); contractChangePlanDto.setCurrentUserId(contractChangePlanPo.getChangePerson()); contractChangeUserInnerServiceSMO.startProcess(contractChangePlanDto); return ResultVo.createResponseEntity(ResultVo.CODE_OK, "保存成功"); }