Commit b85621d6ca7179c99ee2121850455418554e4783
1 parent
a2bd1e6c
a
Showing
19 changed files
with
683 additions
and
30 deletions
trash-activiti/src/main/java/com/trash/activiti/service/impl/ActTaskServiceImpl.java
| 1 | - | ||
| 2 | package com.trash.activiti.service.impl; | 1 | package com.trash.activiti.service.impl; |
| 3 | 2 | ||
| 4 | import java.text.ParseException; | 3 | import java.text.ParseException; |
| @@ -46,6 +45,7 @@ import com.trash.activiti.domain.dto.ActWorkflowFormDataDTO; | @@ -46,6 +45,7 @@ import com.trash.activiti.domain.dto.ActWorkflowFormDataDTO; | ||
| 46 | import com.trash.activiti.mapper.ActReDeploymentMapper; | 45 | import com.trash.activiti.mapper.ActReDeploymentMapper; |
| 47 | import com.trash.activiti.service.IActTaskService; | 46 | import com.trash.activiti.service.IActTaskService; |
| 48 | import com.trash.activiti.service.IActWorkflowFormDataService; | 47 | import com.trash.activiti.service.IActWorkflowFormDataService; |
| 48 | +import com.trash.activiti.service.myTaskService; | ||
| 49 | import com.trash.common.core.page.PageDomain; | 49 | import com.trash.common.core.page.PageDomain; |
| 50 | import com.trash.common.utils.SecurityUtils; | 50 | import com.trash.common.utils.SecurityUtils; |
| 51 | 51 | ||
| @@ -56,7 +56,7 @@ public class ActTaskServiceImpl implements IActTaskService { | @@ -56,7 +56,7 @@ public class ActTaskServiceImpl implements IActTaskService { | ||
| 56 | private RepositoryService repositoryService; | 56 | private RepositoryService repositoryService; |
| 57 | 57 | ||
| 58 | @Autowired | 58 | @Autowired |
| 59 | - private TaskRuntime taskRuntime; | 59 | + private myTaskService taskRuntime; |
| 60 | 60 | ||
| 61 | @Autowired | 61 | @Autowired |
| 62 | private TaskService taskService; | 62 | private TaskService taskService; |
| @@ -81,8 +81,13 @@ public class ActTaskServiceImpl implements IActTaskService { | @@ -81,8 +81,13 @@ public class ActTaskServiceImpl implements IActTaskService { | ||
| 81 | public Page<ActTaskDTO> selectProcessDefinitionList(PageDomain pageDomain) { | 81 | public Page<ActTaskDTO> selectProcessDefinitionList(PageDomain pageDomain) { |
| 82 | Page<ActTaskDTO> list = new Page<ActTaskDTO>(); | 82 | Page<ActTaskDTO> list = new Page<ActTaskDTO>(); |
| 83 | 83 | ||
| 84 | -// tasks(pageable,TaskPayloadBuilder.tasks().withAssignee(authenticatedUserId).withGroups(userGroups).build()); | ||
| 85 | - | 84 | +// List<String> posts = new ArrayList<>(); |
| 85 | +// posts.add("4"); | ||
| 86 | +// SecurityUtils.getLoginUser().getUser().setPostIds(posts); | ||
| 87 | +// List<String> roles = new ArrayList<>(); | ||
| 88 | +// posts.add("7"); | ||
| 89 | +// SecurityUtils.getLoginUser().getUser().setRoleIds(roles); | ||
| 90 | + | ||
| 86 | org.activiti.api.runtime.shared.query.Page<Task> pageTasks = taskRuntime.tasks(Pageable.of((pageDomain.getPageNum() - 1) * pageDomain.getPageSize(), pageDomain.getPageSize())); | 91 | org.activiti.api.runtime.shared.query.Page<Task> pageTasks = taskRuntime.tasks(Pageable.of((pageDomain.getPageNum() - 1) * pageDomain.getPageSize(), pageDomain.getPageSize())); |
| 87 | List<Task> tasks = pageTasks.getContent(); | 92 | List<Task> tasks = pageTasks.getContent(); |
| 88 | int totalItems = pageTasks.getTotalItems(); | 93 | int totalItems = pageTasks.getTotalItems(); |
trash-activiti/src/main/java/com/trash/activiti/service/impl/myTaskServiceImpl.java
0 → 100644
| 1 | +package com.trash.activiti.service.impl; | ||
| 2 | + | ||
| 3 | +import org.activiti.api.model.shared.model.VariableInstance; | ||
| 4 | +import org.activiti.api.runtime.shared.NotFoundException; | ||
| 5 | +import org.activiti.api.runtime.shared.identity.UserGroupManager; | ||
| 6 | +import org.activiti.api.runtime.shared.query.Page; | ||
| 7 | +import org.activiti.api.runtime.shared.query.Pageable; | ||
| 8 | +import org.activiti.api.runtime.shared.security.SecurityManager; | ||
| 9 | +import org.activiti.api.task.model.Task; | ||
| 10 | +import org.activiti.api.task.model.builders.TaskPayloadBuilder; | ||
| 11 | +import org.activiti.api.task.model.impl.TaskImpl; | ||
| 12 | +import org.activiti.api.task.model.payloads.CandidateGroupsPayload; | ||
| 13 | +import org.activiti.api.task.model.payloads.CandidateUsersPayload; | ||
| 14 | +import org.activiti.api.task.model.payloads.ClaimTaskPayload; | ||
| 15 | +import org.activiti.api.task.model.payloads.CompleteTaskPayload; | ||
| 16 | +import org.activiti.api.task.model.payloads.CreateTaskPayload; | ||
| 17 | +import org.activiti.api.task.model.payloads.CreateTaskVariablePayload; | ||
| 18 | +import org.activiti.api.task.model.payloads.DeleteTaskPayload; | ||
| 19 | +import org.activiti.api.task.model.payloads.GetTaskVariablesPayload; | ||
| 20 | +import org.activiti.api.task.model.payloads.GetTasksPayload; | ||
| 21 | +import org.activiti.api.task.model.payloads.ReleaseTaskPayload; | ||
| 22 | +import org.activiti.api.task.model.payloads.SaveTaskPayload; | ||
| 23 | +import org.activiti.api.task.model.payloads.UpdateTaskPayload; | ||
| 24 | +import org.activiti.api.task.model.payloads.UpdateTaskVariablePayload; | ||
| 25 | +import org.activiti.api.task.runtime.TaskRuntime; | ||
| 26 | +import org.activiti.api.task.runtime.conf.TaskRuntimeConfiguration; | ||
| 27 | +import org.activiti.engine.TaskService; | ||
| 28 | +import org.activiti.engine.task.IdentityLink; | ||
| 29 | +import org.activiti.engine.task.IdentityLinkType; | ||
| 30 | +import org.activiti.engine.task.TaskQuery; | ||
| 31 | +import org.activiti.runtime.api.impl.TaskRuntimeHelper; | ||
| 32 | +import org.activiti.runtime.api.model.impl.APITaskConverter; | ||
| 33 | +import org.activiti.runtime.api.model.impl.APIVariableInstanceConverter; | ||
| 34 | +import org.activiti.runtime.api.query.impl.PageImpl; | ||
| 35 | +import org.springframework.security.access.prepost.PreAuthorize; | ||
| 36 | +import org.springframework.stereotype.Service; | ||
| 37 | + | ||
| 38 | +import com.trash.activiti.service.myTaskService; | ||
| 39 | +import com.trash.common.utils.SecurityUtils; | ||
| 40 | + | ||
| 41 | +import java.util.ArrayList; | ||
| 42 | +import java.util.List; | ||
| 43 | +import java.util.Objects; | ||
| 44 | + | ||
| 45 | +@PreAuthorize("hasRole('ACTIVITI_USER')") | ||
| 46 | +@Service | ||
| 47 | +public class myTaskServiceImpl implements myTaskService { | ||
| 48 | + | ||
| 49 | + private final TaskService taskService; | ||
| 50 | + | ||
| 51 | + private final APITaskConverter taskConverter; | ||
| 52 | + | ||
| 53 | + private final APIVariableInstanceConverter variableInstanceConverter; | ||
| 54 | + | ||
| 55 | + private final TaskRuntimeConfiguration configuration; | ||
| 56 | + | ||
| 57 | + private final UserGroupManager userGroupManager; | ||
| 58 | + | ||
| 59 | + private final SecurityManager securityManager; | ||
| 60 | + | ||
| 61 | + private final TaskRuntimeHelper taskRuntimeHelper; | ||
| 62 | + | ||
| 63 | + public myTaskServiceImpl(TaskService taskService, | ||
| 64 | + UserGroupManager userGroupManager, | ||
| 65 | + SecurityManager securityManager, | ||
| 66 | + APITaskConverter taskConverter, | ||
| 67 | + APIVariableInstanceConverter variableInstanceConverter, | ||
| 68 | + TaskRuntimeConfiguration configuration, | ||
| 69 | + TaskRuntimeHelper taskRuntimeHelper) { | ||
| 70 | + this.taskService = taskService; | ||
| 71 | + this.userGroupManager = userGroupManager; | ||
| 72 | + this.securityManager = securityManager; | ||
| 73 | + this.taskConverter = taskConverter; | ||
| 74 | + this.variableInstanceConverter = variableInstanceConverter; | ||
| 75 | + this.configuration = configuration; | ||
| 76 | + this.taskRuntimeHelper = taskRuntimeHelper; | ||
| 77 | + } | ||
| 78 | + | ||
| 79 | + @Override | ||
| 80 | + public TaskRuntimeConfiguration configuration() { | ||
| 81 | + return configuration; | ||
| 82 | + } | ||
| 83 | + | ||
| 84 | + @Override | ||
| 85 | + public Task task(String taskId) { | ||
| 86 | + | ||
| 87 | + org.activiti.engine.task.Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); | ||
| 88 | + | ||
| 89 | + if (task == null) { | ||
| 90 | + throw new NotFoundException("未找到审批任务 id: " + taskId); | ||
| 91 | + } | ||
| 92 | + | ||
| 93 | + | ||
| 94 | + return taskConverter.from(task); | ||
| 95 | + } | ||
| 96 | + | ||
| 97 | + @Override | ||
| 98 | + public Page<Task> tasks(Pageable pageable) { | ||
| 99 | + return tasks(pageable,null); | ||
| 100 | + } | ||
| 101 | + | ||
| 102 | + @Override | ||
| 103 | + public Page<Task> tasks(Pageable pageable,GetTasksPayload getTasksPayload) { | ||
| 104 | + TaskQuery taskQuery = taskService.createTaskQuery(); | ||
| 105 | + if (getTasksPayload == null) { | ||
| 106 | + getTasksPayload = TaskPayloadBuilder.tasks().build(); | ||
| 107 | + } | ||
| 108 | + | ||
| 109 | + if(SecurityUtils.getLoginUser().getUser().getPostIds() == null && SecurityUtils.getLoginUser().getUser().getRoleIds() == null){ | ||
| 110 | + taskQuery.taskCandidateOrAssigned(SecurityUtils.getUsername()); | ||
| 111 | + }else{ | ||
| 112 | + if( SecurityUtils.getLoginUser().getUser().getPostIds() != null && SecurityUtils.getLoginUser().getUser().getRoleIds() != null){ | ||
| 113 | + taskQuery.or().taskCandidateGroupIn(SecurityUtils.getLoginUser().getUser().getPostIds()); | ||
| 114 | + for(String role : SecurityUtils.getLoginUser().getUser().getRoleIds()){ | ||
| 115 | + taskQuery.taskCandidateUser(role); | ||
| 116 | + } | ||
| 117 | + taskQuery.endOr(); | ||
| 118 | + }else{ | ||
| 119 | + if(SecurityUtils.getLoginUser().getUser().getPostIds() != null){ | ||
| 120 | + taskQuery.taskCandidateGroupIn(SecurityUtils.getLoginUser().getUser().getPostIds()); | ||
| 121 | + } | ||
| 122 | + | ||
| 123 | + if(SecurityUtils.getLoginUser().getUser().getRoleIds() != null){ | ||
| 124 | + for(String role : SecurityUtils.getLoginUser().getUser().getRoleIds()){ | ||
| 125 | + taskQuery.taskCandidateUser(role); | ||
| 126 | + } | ||
| 127 | + } | ||
| 128 | + } | ||
| 129 | + } | ||
| 130 | + | ||
| 131 | + List<org.activiti.engine.task.Task> tt = taskQuery.list(); | ||
| 132 | + | ||
| 133 | + | ||
| 134 | + if (getTasksPayload.getProcessInstanceId() != null) { | ||
| 135 | + taskQuery = taskQuery.processInstanceId(getTasksPayload.getProcessInstanceId()); | ||
| 136 | + } | ||
| 137 | + if (getTasksPayload.getParentTaskId() != null) { | ||
| 138 | + taskQuery = taskQuery.taskParentTaskId(getTasksPayload.getParentTaskId()); | ||
| 139 | + } | ||
| 140 | + List<Task> tasks = taskConverter.from(taskQuery.listPage(pageable.getStartIndex(), | ||
| 141 | + pageable.getMaxItems())); | ||
| 142 | + return new PageImpl<>(tasks, | ||
| 143 | + Math.toIntExact(taskQuery.count())); | ||
| 144 | + } | ||
| 145 | + | ||
| 146 | + @Override | ||
| 147 | + public Task complete(CompleteTaskPayload completeTaskPayload) { | ||
| 148 | + //@TODO: not the most efficient way to return the just completed task, improve | ||
| 149 | + // we might need to create an empty shell with the task ID and Status only | ||
| 150 | + Task task; | ||
| 151 | + String authenticatedUserId = securityManager.getAuthenticatedUserId(); | ||
| 152 | + try { | ||
| 153 | + task = task(completeTaskPayload.getTaskId()); | ||
| 154 | + } catch (IllegalStateException ex) { | ||
| 155 | + throw new IllegalStateException("The authenticated user cannot complete task" + completeTaskPayload.getTaskId() + " due he/she cannot access to the task"); | ||
| 156 | + } | ||
| 157 | + // validate the the task does have an assignee | ||
| 158 | + if (task.getAssignee() == null || task.getAssignee().isEmpty()) { | ||
| 159 | + throw new IllegalStateException("The task needs to be claimed before trying to complete it"); | ||
| 160 | + } | ||
| 161 | + if (!task.getAssignee().equals(authenticatedUserId)) { | ||
| 162 | + throw new IllegalStateException("You cannot complete the task if you are not assigned to it"); | ||
| 163 | + } | ||
| 164 | + | ||
| 165 | + taskService.complete(completeTaskPayload.getTaskId(), | ||
| 166 | + completeTaskPayload.getVariables(), true); | ||
| 167 | + | ||
| 168 | + | ||
| 169 | + ((TaskImpl) task).setStatus(Task.TaskStatus.COMPLETED); | ||
| 170 | + | ||
| 171 | + return task; | ||
| 172 | + } | ||
| 173 | + | ||
| 174 | + @Override | ||
| 175 | + public Task claim(ClaimTaskPayload claimTaskPayload) { | ||
| 176 | + // Validate that the task is visible by the currently authorized user | ||
| 177 | + Task task; | ||
| 178 | + try { | ||
| 179 | + task = task(claimTaskPayload.getTaskId()); | ||
| 180 | + } catch (IllegalStateException ex) { | ||
| 181 | + throw new IllegalStateException("The authenticated user cannot claim task" + claimTaskPayload.getTaskId() + " due it is not a candidate for it"); | ||
| 182 | + } | ||
| 183 | + // validate the the task doesn't have an assignee | ||
| 184 | + if (task.getAssignee() != null && !task.getAssignee().isEmpty()) { | ||
| 185 | + throw new IllegalStateException("The task was already claimed, the assignee of this task needs to release it first for you to claim it"); | ||
| 186 | + } | ||
| 187 | + | ||
| 188 | + String authenticatedUserId = securityManager.getAuthenticatedUserId(); | ||
| 189 | + claimTaskPayload.setAssignee(authenticatedUserId); | ||
| 190 | + taskService.claim(claimTaskPayload.getTaskId(), | ||
| 191 | + claimTaskPayload.getAssignee()); | ||
| 192 | + | ||
| 193 | + return task(claimTaskPayload.getTaskId()); | ||
| 194 | + } | ||
| 195 | + | ||
| 196 | + @Override | ||
| 197 | + public Task release(ReleaseTaskPayload releaseTaskPayload) { | ||
| 198 | + // Validate that the task is visible by the currently authorized user | ||
| 199 | + Task task; | ||
| 200 | + try { | ||
| 201 | + task = task(releaseTaskPayload.getTaskId()); | ||
| 202 | + } catch (IllegalStateException ex) { | ||
| 203 | + throw new IllegalStateException("The authenticated user cannot claim task" + releaseTaskPayload.getTaskId() + " due it is not a candidate for it"); | ||
| 204 | + } | ||
| 205 | + // validate the the task doesn't have an assignee | ||
| 206 | + if (task.getAssignee() == null || task.getAssignee().isEmpty()) { | ||
| 207 | + throw new IllegalStateException("You cannot release a task that is not claimed"); | ||
| 208 | + } | ||
| 209 | + String authenticatedUserId = securityManager.getAuthenticatedUserId(); | ||
| 210 | + // validate that you are trying to release task where you are the assignee | ||
| 211 | + if (!task.getAssignee().equals(authenticatedUserId)) { | ||
| 212 | + throw new IllegalStateException("You cannot release a task where you are not the assignee"); | ||
| 213 | + } | ||
| 214 | + | ||
| 215 | + taskService.unclaim(releaseTaskPayload.getTaskId()); | ||
| 216 | + return task(releaseTaskPayload.getTaskId()); | ||
| 217 | + } | ||
| 218 | + | ||
| 219 | + @Override | ||
| 220 | + public Task update(UpdateTaskPayload updateTaskPayload) { | ||
| 221 | + return taskRuntimeHelper.applyUpdateTaskPayload(false, updateTaskPayload); | ||
| 222 | + } | ||
| 223 | + | ||
| 224 | + @Override | ||
| 225 | + public Task delete(DeleteTaskPayload deleteTaskPayload) { | ||
| 226 | + //@TODO: not the most efficient way to return the just deleted task, improve | ||
| 227 | + // we might need to create an empty shell with the task ID and Status only | ||
| 228 | + Task task; | ||
| 229 | + try { | ||
| 230 | + task = task(deleteTaskPayload.getTaskId()); | ||
| 231 | + } catch (IllegalStateException ex) { | ||
| 232 | + throw new IllegalStateException("The authenticated user cannot delete the task" + deleteTaskPayload.getTaskId() + " due it is not the current assignee"); | ||
| 233 | + } | ||
| 234 | + String authenticatedUserId = securityManager.getAuthenticatedUserId(); | ||
| 235 | + // validate that you are trying to delete task where you are the assignee or the owner | ||
| 236 | + if ((task.getAssignee() == null || task.getAssignee().isEmpty() || !task.getAssignee().equals(authenticatedUserId)) && | ||
| 237 | + (task.getOwner() == null || task.getOwner().isEmpty() || !task.getOwner().equals(authenticatedUserId))) { | ||
| 238 | + throw new IllegalStateException("You cannot delete a task where you are not the assignee/owner"); | ||
| 239 | + } | ||
| 240 | + TaskImpl deletedTaskData = new TaskImpl(task.getId(), | ||
| 241 | + task.getName(), | ||
| 242 | + Task.TaskStatus.CANCELLED); | ||
| 243 | + if (!deleteTaskPayload.hasReason()) { | ||
| 244 | + deleteTaskPayload.setReason("Task deleted by " + authenticatedUserId); | ||
| 245 | + } | ||
| 246 | + taskService.deleteTask(deleteTaskPayload.getTaskId(), | ||
| 247 | + deleteTaskPayload.getReason(), | ||
| 248 | + true); | ||
| 249 | + return deletedTaskData; | ||
| 250 | + } | ||
| 251 | + | ||
| 252 | + @Override | ||
| 253 | + public Task create(CreateTaskPayload createTaskPayload) { | ||
| 254 | + if (createTaskPayload.getName() == null || createTaskPayload.getName().isEmpty()) { | ||
| 255 | + throw new IllegalStateException("You cannot create a task without name"); | ||
| 256 | + } | ||
| 257 | + | ||
| 258 | + org.activiti.engine.task.Task task = taskService.newTask(); | ||
| 259 | + task.setName(createTaskPayload.getName()); | ||
| 260 | + task.setDescription(createTaskPayload.getDescription()); | ||
| 261 | + task.setDueDate(createTaskPayload.getDueDate()); | ||
| 262 | + task.setPriority(createTaskPayload.getPriority()); | ||
| 263 | + if (createTaskPayload.getAssignee() != null && !createTaskPayload.getAssignee().isEmpty()) { | ||
| 264 | + task.setAssignee(createTaskPayload.getAssignee()); | ||
| 265 | + } | ||
| 266 | + task.setParentTaskId(createTaskPayload.getParentTaskId()); | ||
| 267 | + task.setFormKey(createTaskPayload.getFormKey()); | ||
| 268 | + task.setOwner(securityManager.getAuthenticatedUserId()); | ||
| 269 | + taskService.saveTask(task); | ||
| 270 | + taskService.addCandidateUser(task.getId(), | ||
| 271 | + securityManager.getAuthenticatedUserId()); | ||
| 272 | + if (createTaskPayload.getCandidateGroups() != null && !createTaskPayload.getCandidateGroups().isEmpty()) { | ||
| 273 | + for ( String g : createTaskPayload.getCandidateGroups() ) { | ||
| 274 | + taskService.addCandidateGroup(task.getId(), | ||
| 275 | + g); | ||
| 276 | + } | ||
| 277 | + } | ||
| 278 | + | ||
| 279 | + if (createTaskPayload.getCandidateUsers() != null && !createTaskPayload.getCandidateUsers().isEmpty()) { | ||
| 280 | + for ( String u : createTaskPayload.getCandidateUsers() ) { | ||
| 281 | + taskService.addCandidateUser(task.getId(), | ||
| 282 | + u); | ||
| 283 | + } | ||
| 284 | + } | ||
| 285 | + | ||
| 286 | + return taskConverter.from(task); | ||
| 287 | + } | ||
| 288 | + | ||
| 289 | + @Override | ||
| 290 | + public void addCandidateUsers(CandidateUsersPayload candidateUsersPayload) { | ||
| 291 | + org.activiti.engine.task.Task internalTask; | ||
| 292 | + try { | ||
| 293 | + internalTask = taskRuntimeHelper.getInternalTaskWithChecks(candidateUsersPayload.getTaskId()); | ||
| 294 | + | ||
| 295 | + } catch (IllegalStateException ex) { | ||
| 296 | + throw new IllegalStateException("The authenticated user cannot update the task" + candidateUsersPayload.getTaskId() + " due it is not the current assignee"); | ||
| 297 | + } | ||
| 298 | + | ||
| 299 | + String authenticatedUserId = securityManager.getAuthenticatedUserId(); | ||
| 300 | + | ||
| 301 | + // validate that you are trying to add CandidateUsers to the task where you are the assignee | ||
| 302 | + if (!Objects.equals(internalTask.getAssignee(), authenticatedUserId)) { | ||
| 303 | + throw new IllegalStateException("You cannot update a task where you are not the assignee"); | ||
| 304 | + } | ||
| 305 | + | ||
| 306 | + | ||
| 307 | + if (candidateUsersPayload.getCandidateUsers() != null && !candidateUsersPayload.getCandidateUsers().isEmpty()) { | ||
| 308 | + for ( String u : candidateUsersPayload.getCandidateUsers() ) { | ||
| 309 | + taskService.addCandidateUser(internalTask.getId(), | ||
| 310 | + u); | ||
| 311 | + } | ||
| 312 | + } | ||
| 313 | + } | ||
| 314 | + | ||
| 315 | + @Override | ||
| 316 | + public void deleteCandidateUsers(CandidateUsersPayload candidateUsersPayload) { | ||
| 317 | + org.activiti.engine.task.Task internalTask; | ||
| 318 | + try { | ||
| 319 | + internalTask = taskRuntimeHelper.getInternalTaskWithChecks(candidateUsersPayload.getTaskId()); | ||
| 320 | + | ||
| 321 | + } catch (IllegalStateException ex) { | ||
| 322 | + throw new IllegalStateException("The authenticated user cannot update the task" + candidateUsersPayload.getTaskId() + " due it is not the current assignee"); | ||
| 323 | + } | ||
| 324 | + | ||
| 325 | + String authenticatedUserId = securityManager.getAuthenticatedUserId(); | ||
| 326 | + | ||
| 327 | + // validate that you are trying to add CandidateUsers to the task where you are the assignee | ||
| 328 | + if (!Objects.equals(internalTask.getAssignee(), authenticatedUserId)) { | ||
| 329 | + throw new IllegalStateException("You cannot update a task where you are not the assignee"); | ||
| 330 | + } | ||
| 331 | + | ||
| 332 | + | ||
| 333 | + if (candidateUsersPayload.getCandidateUsers() != null && !candidateUsersPayload.getCandidateUsers().isEmpty()) { | ||
| 334 | + for ( String u : candidateUsersPayload.getCandidateUsers() ) { | ||
| 335 | + taskService.deleteCandidateUser(internalTask.getId(), | ||
| 336 | + u); | ||
| 337 | + } | ||
| 338 | + } | ||
| 339 | + } | ||
| 340 | + | ||
| 341 | + @Override | ||
| 342 | + public void addCandidateGroups(CandidateGroupsPayload candidateGroupsPayload) { | ||
| 343 | + org.activiti.engine.task.Task internalTask; | ||
| 344 | + try { | ||
| 345 | + internalTask = taskRuntimeHelper.getInternalTaskWithChecks(candidateGroupsPayload.getTaskId()); | ||
| 346 | + | ||
| 347 | + } catch (IllegalStateException ex) { | ||
| 348 | + throw new IllegalStateException("The authenticated user cannot update the task" + candidateGroupsPayload.getTaskId() + " due it is not the current assignee"); | ||
| 349 | + } | ||
| 350 | + | ||
| 351 | + String authenticatedUserId = securityManager.getAuthenticatedUserId(); | ||
| 352 | + // validate that you are trying to add CandidateGroups to the task where you are the assignee | ||
| 353 | + if (!Objects.equals(internalTask.getAssignee(), authenticatedUserId)) { | ||
| 354 | + throw new IllegalStateException("You cannot update a task where you are not the assignee"); | ||
| 355 | + } | ||
| 356 | + | ||
| 357 | + | ||
| 358 | + if (candidateGroupsPayload.getCandidateGroups() != null && !candidateGroupsPayload.getCandidateGroups().isEmpty()) { | ||
| 359 | + for ( String g : candidateGroupsPayload.getCandidateGroups() ) { | ||
| 360 | + taskService.addCandidateGroup(internalTask.getId(), | ||
| 361 | + g); | ||
| 362 | + } | ||
| 363 | + } | ||
| 364 | + } | ||
| 365 | + | ||
| 366 | + @Override | ||
| 367 | + public void deleteCandidateGroups(CandidateGroupsPayload candidateGroupsPayload) { | ||
| 368 | + org.activiti.engine.task.Task internalTask; | ||
| 369 | + try { | ||
| 370 | + internalTask = taskRuntimeHelper.getInternalTaskWithChecks(candidateGroupsPayload.getTaskId()); | ||
| 371 | + | ||
| 372 | + } catch (IllegalStateException ex) { | ||
| 373 | + throw new IllegalStateException("The authenticated user cannot update the task" + candidateGroupsPayload.getTaskId() + " due it is not the current assignee"); | ||
| 374 | + } | ||
| 375 | + | ||
| 376 | + String authenticatedUserId = securityManager.getAuthenticatedUserId(); | ||
| 377 | + // validate that you are trying to add CandidateGroups to the task where you are the assignee | ||
| 378 | + if (!Objects.equals(internalTask.getAssignee(), authenticatedUserId)) { | ||
| 379 | + throw new IllegalStateException("You cannot update a task where you are not the assignee"); | ||
| 380 | + } | ||
| 381 | + | ||
| 382 | + | ||
| 383 | + if (candidateGroupsPayload.getCandidateGroups() != null && !candidateGroupsPayload.getCandidateGroups().isEmpty()) { | ||
| 384 | + for ( String g : candidateGroupsPayload.getCandidateGroups() ) { | ||
| 385 | + taskService.deleteCandidateGroup(internalTask.getId(), | ||
| 386 | + g); | ||
| 387 | + } | ||
| 388 | + } | ||
| 389 | + } | ||
| 390 | + | ||
| 391 | + @Override | ||
| 392 | + public List<String> userCandidates(String taskId) { | ||
| 393 | + List<IdentityLink> identityLinks = getIdentityLinks(taskId); | ||
| 394 | + List<String> userCandidates = new ArrayList<>(); | ||
| 395 | + if (identityLinks != null) { | ||
| 396 | + for ( IdentityLink i : identityLinks ) { | ||
| 397 | + if (i.getUserId() != null) { | ||
| 398 | + if (i.getType().equals(IdentityLinkType.CANDIDATE)) { | ||
| 399 | + userCandidates.add(i.getUserId()); | ||
| 400 | + } | ||
| 401 | + } | ||
| 402 | + } | ||
| 403 | + | ||
| 404 | + } | ||
| 405 | + return userCandidates; | ||
| 406 | + } | ||
| 407 | + | ||
| 408 | + @Override | ||
| 409 | + public List<String> groupCandidates(String taskId) { | ||
| 410 | + List<IdentityLink> identityLinks = getIdentityLinks(taskId); | ||
| 411 | + List<String> groupCandidates = new ArrayList<>(); | ||
| 412 | + if (identityLinks != null) { | ||
| 413 | + for ( IdentityLink i : identityLinks ) { | ||
| 414 | + if (i.getGroupId() != null) { | ||
| 415 | + if (i.getType().equals(IdentityLinkType.CANDIDATE)) { | ||
| 416 | + groupCandidates.add(i.getGroupId()); | ||
| 417 | + } | ||
| 418 | + } | ||
| 419 | + } | ||
| 420 | + | ||
| 421 | + } | ||
| 422 | + return groupCandidates; | ||
| 423 | + } | ||
| 424 | + | ||
| 425 | + @Override | ||
| 426 | + public List<VariableInstance> variables(GetTaskVariablesPayload getTaskVariablesPayload) { | ||
| 427 | + taskRuntimeHelper.assertHasAccessToTask(getTaskVariablesPayload.getTaskId()); | ||
| 428 | + return variableInstanceConverter.from(taskRuntimeHelper.getInternalTaskVariables(getTaskVariablesPayload.getTaskId()).values()); | ||
| 429 | + } | ||
| 430 | + | ||
| 431 | + @Override | ||
| 432 | + public void createVariable(CreateTaskVariablePayload createTaskVariablePayload) { | ||
| 433 | + taskRuntimeHelper.createVariable(false, createTaskVariablePayload); | ||
| 434 | + } | ||
| 435 | + | ||
| 436 | + @Override | ||
| 437 | + public void updateVariable(UpdateTaskVariablePayload updateTaskVariablePayload) { | ||
| 438 | + taskRuntimeHelper.updateVariable(false, updateTaskVariablePayload); | ||
| 439 | + } | ||
| 440 | + | ||
| 441 | + private List<IdentityLink> getIdentityLinks(String taskId) { | ||
| 442 | + String authenticatedUserId = securityManager.getAuthenticatedUserId(); | ||
| 443 | + if (authenticatedUserId != null && !authenticatedUserId.isEmpty()) { | ||
| 444 | + List<String> userRoles = userGroupManager.getUserRoles(authenticatedUserId); | ||
| 445 | + List<String> userGroups = userGroupManager.getUserGroups(authenticatedUserId); | ||
| 446 | + org.activiti.engine.task.Task internalTask = taskService.createTaskQuery().taskCandidateOrAssigned(authenticatedUserId, | ||
| 447 | + userGroups).taskId(taskId).singleResult(); | ||
| 448 | + if (internalTask == null) { | ||
| 449 | + throw new NotFoundException("Unable to find task for the given id: " + taskId + " for user: " + authenticatedUserId + " (with groups: " + userGroups + " & with roles: " + userRoles + ")"); | ||
| 450 | + } | ||
| 451 | + return taskService.getIdentityLinksForTask(taskId); | ||
| 452 | + } | ||
| 453 | + throw new IllegalStateException("There is no authenticated user, we need a user authenticated to find tasks"); | ||
| 454 | + } | ||
| 455 | + | ||
| 456 | + @Override | ||
| 457 | + public void save(SaveTaskPayload saveTaskPayload) { | ||
| 458 | + taskRuntimeHelper.assertHasAccessToTask(saveTaskPayload.getTaskId()); | ||
| 459 | + | ||
| 460 | + taskService.setVariablesLocal(saveTaskPayload.getTaskId(), | ||
| 461 | + saveTaskPayload.getVariables()); | ||
| 462 | + } | ||
| 463 | + | ||
| 464 | +} |
trash-activiti/src/main/java/com/trash/activiti/service/myTaskService.java
0 → 100644
| 1 | +package com.trash.activiti.service; | ||
| 2 | +import java.util.List; | ||
| 3 | + | ||
| 4 | +import org.activiti.api.model.shared.model.VariableInstance; | ||
| 5 | +import org.activiti.api.runtime.shared.query.Page; | ||
| 6 | +import org.activiti.api.runtime.shared.query.Pageable; | ||
| 7 | +import org.activiti.api.task.model.Task; | ||
| 8 | +import org.activiti.api.task.model.payloads.CandidateGroupsPayload; | ||
| 9 | +import org.activiti.api.task.model.payloads.CandidateUsersPayload; | ||
| 10 | +import org.activiti.api.task.model.payloads.ClaimTaskPayload; | ||
| 11 | +import org.activiti.api.task.model.payloads.CompleteTaskPayload; | ||
| 12 | +import org.activiti.api.task.model.payloads.CreateTaskPayload; | ||
| 13 | +import org.activiti.api.task.model.payloads.CreateTaskVariablePayload; | ||
| 14 | +import org.activiti.api.task.model.payloads.DeleteTaskPayload; | ||
| 15 | +import org.activiti.api.task.model.payloads.GetTaskVariablesPayload; | ||
| 16 | +import org.activiti.api.task.model.payloads.GetTasksPayload; | ||
| 17 | +import org.activiti.api.task.model.payloads.ReleaseTaskPayload; | ||
| 18 | +import org.activiti.api.task.model.payloads.SaveTaskPayload; | ||
| 19 | +import org.activiti.api.task.model.payloads.UpdateTaskPayload; | ||
| 20 | +import org.activiti.api.task.model.payloads.UpdateTaskVariablePayload; | ||
| 21 | +import org.activiti.api.task.runtime.conf.TaskRuntimeConfiguration; | ||
| 22 | + | ||
| 23 | +public interface myTaskService { | ||
| 24 | + | ||
| 25 | + | ||
| 26 | + | ||
| 27 | + TaskRuntimeConfiguration configuration(); | ||
| 28 | + | ||
| 29 | + /** | ||
| 30 | + * Get task by id if the authenticated user: | ||
| 31 | + * - is the assignee or | ||
| 32 | + * - is in a group with is assigned to the task or | ||
| 33 | + * - has admin role | ||
| 34 | + */ | ||
| 35 | + Task task(String taskId); | ||
| 36 | + | ||
| 37 | + /** | ||
| 38 | + * Get all tasks where | ||
| 39 | + * - the authenticated user is the actual assignee | ||
| 40 | + * - the user belongs to a group that is a candidate for the task | ||
| 41 | + */ | ||
| 42 | + Page<Task> tasks(Pageable pageable); | ||
| 43 | + | ||
| 44 | + /** | ||
| 45 | + * Get all tasks where applying the filters in the Payload | ||
| 46 | + * - the authenticated user is the actual assignee | ||
| 47 | + * - the user belongs to a group that is a candidate for the task | ||
| 48 | + */ | ||
| 49 | + Page<Task> tasks(Pageable pageable, | ||
| 50 | + GetTasksPayload getTasksPayload); | ||
| 51 | + | ||
| 52 | + /** | ||
| 53 | + * Creates a task based on the following rules | ||
| 54 | + * - If an assignee is provided it creates and assign the task to the provided user | ||
| 55 | + * - If there is no assignee the task is not assigned, just created | ||
| 56 | + * - The owner of the task is the currently authenticated user (which is automatically added as a candidate) | ||
| 57 | + * - If a group or list of groups is provided those groups are added as candidates for claiming the task | ||
| 58 | + */ | ||
| 59 | + Task create(CreateTaskPayload createTaskPayload); | ||
| 60 | + | ||
| 61 | + /** | ||
| 62 | + * Claim a task with the currently authenticated user | ||
| 63 | + * - If there is no authenticated user throw an IllegalStateException | ||
| 64 | + * - If the currently authenticated user is not a candidate throw an IllegalStateException | ||
| 65 | + * - The current approach doesn't support impersonation, it will always take the currently authenticated user | ||
| 66 | + * - after the claim the task should be in assigned status | ||
| 67 | + */ | ||
| 68 | + Task claim(ClaimTaskPayload claimTaskPayload); | ||
| 69 | + | ||
| 70 | + /** | ||
| 71 | + * Release a previously claimed task | ||
| 72 | + * - The authenticated user needs to be the assignee in order to release it | ||
| 73 | + */ | ||
| 74 | + Task release(ReleaseTaskPayload releaseTaskPayload); | ||
| 75 | + | ||
| 76 | + /** | ||
| 77 | + * Completes the selected task with the variables set in the payload | ||
| 78 | + * - This method checks that the task is visible by the authenticated user | ||
| 79 | + * - This method also check that the task is assigned to the currently authenticated user before complete | ||
| 80 | + * - This method return a shallow Task object with the basic information needed to validate that the task was completed | ||
| 81 | + */ | ||
| 82 | + Task complete(CompleteTaskPayload completeTaskPayload); | ||
| 83 | + | ||
| 84 | + /** | ||
| 85 | + * Saves the selected task with the variables set in the payload in the task scope | ||
| 86 | + * - This method checks that the task is visible by the authenticated user | ||
| 87 | + * - This method also check that the task is assigned to the currently authenticated user | ||
| 88 | + */ | ||
| 89 | + void save(SaveTaskPayload saveTaskPayload); | ||
| 90 | + | ||
| 91 | + /** | ||
| 92 | + * Updates details of a task | ||
| 93 | + * - The authenticated user should be able to see the task in order to update its details | ||
| 94 | + * - The authenticated user needs to be the assignee of the task to update its details, if not he/she will need to claim the task first | ||
| 95 | + */ | ||
| 96 | + Task update(UpdateTaskPayload updateTaskPayload); | ||
| 97 | + | ||
| 98 | + /** | ||
| 99 | + * Deletes a task | ||
| 100 | + * - The authenticated user should be able to see the task in order to delete it | ||
| 101 | + * - The authenticated user needs to be the assignee of the task in order to delete it | ||
| 102 | + * - this method returns a shallow Task with the necessary information to validate that the task was deleted | ||
| 103 | + */ | ||
| 104 | + Task delete(DeleteTaskPayload deleteTaskPayload); | ||
| 105 | + | ||
| 106 | + void createVariable(CreateTaskVariablePayload createTaskVariablePayload); | ||
| 107 | + void updateVariable(UpdateTaskVariablePayload updateTaskVariablePayload); | ||
| 108 | + List<VariableInstance> variables(GetTaskVariablesPayload getTaskVariablesPayload); | ||
| 109 | + | ||
| 110 | + void addCandidateUsers(CandidateUsersPayload candidateUsersPayload); | ||
| 111 | + void deleteCandidateUsers(CandidateUsersPayload candidateUsersPayload); | ||
| 112 | + | ||
| 113 | + void addCandidateGroups(CandidateGroupsPayload candidateGroupsPayload); | ||
| 114 | + void deleteCandidateGroups(CandidateGroupsPayload candidateGroupsPayload); | ||
| 115 | + | ||
| 116 | + List<String> userCandidates(String taskId); | ||
| 117 | + List<String> groupCandidates(String taskId); | ||
| 118 | + | ||
| 119 | +} |
trash-common/src/main/java/com/trash/common/core/domain/entity/SysUser.java
| @@ -88,10 +88,10 @@ public class SysUser extends BaseEntity | @@ -88,10 +88,10 @@ public class SysUser extends BaseEntity | ||
| 88 | private List<SysRole> roles; | 88 | private List<SysRole> roles; |
| 89 | 89 | ||
| 90 | /** 角色组 */ | 90 | /** 角色组 */ |
| 91 | - private Long[] roleIds; | 91 | + private List<String> roleIds; |
| 92 | 92 | ||
| 93 | /** 岗位组 */ | 93 | /** 岗位组 */ |
| 94 | - private Long[] postIds; | 94 | + private List<String> postIds; |
| 95 | 95 | ||
| 96 | public SysUser() | 96 | public SysUser() |
| 97 | { | 97 | { |
| @@ -281,22 +281,22 @@ public class SysUser extends BaseEntity | @@ -281,22 +281,22 @@ public class SysUser extends BaseEntity | ||
| 281 | this.roles = roles; | 281 | this.roles = roles; |
| 282 | } | 282 | } |
| 283 | 283 | ||
| 284 | - public Long[] getRoleIds() | 284 | + public List<String> getRoleIds() |
| 285 | { | 285 | { |
| 286 | return roleIds; | 286 | return roleIds; |
| 287 | } | 287 | } |
| 288 | 288 | ||
| 289 | - public void setRoleIds(Long[] roleIds) | 289 | + public void setRoleIds(List<String> roleIds) |
| 290 | { | 290 | { |
| 291 | this.roleIds = roleIds; | 291 | this.roleIds = roleIds; |
| 292 | } | 292 | } |
| 293 | 293 | ||
| 294 | - public Long[] getPostIds() | 294 | + public List<String> getPostIds() |
| 295 | { | 295 | { |
| 296 | return postIds; | 296 | return postIds; |
| 297 | } | 297 | } |
| 298 | 298 | ||
| 299 | - public void setPostIds(Long[] postIds) | 299 | + public void setPostIds(List<String> postIds) |
| 300 | { | 300 | { |
| 301 | this.postIds = postIds; | 301 | this.postIds = postIds; |
| 302 | } | 302 | } |
trash-framework/src/main/java/com/trash/framework/web/service/SysLoginService.java
| @@ -2,11 +2,13 @@ package com.trash.framework.web.service; | @@ -2,11 +2,13 @@ package com.trash.framework.web.service; | ||
| 2 | 2 | ||
| 3 | import java.util.ArrayList; | 3 | import java.util.ArrayList; |
| 4 | import java.util.HashSet; | 4 | import java.util.HashSet; |
| 5 | +import java.util.List; | ||
| 5 | import java.util.Set; | 6 | import java.util.Set; |
| 6 | import java.util.concurrent.TimeUnit; | 7 | import java.util.concurrent.TimeUnit; |
| 7 | 8 | ||
| 8 | import javax.annotation.Resource; | 9 | import javax.annotation.Resource; |
| 9 | 10 | ||
| 11 | +import org.apache.commons.collections4.iterators.ArrayListIterator; | ||
| 10 | import org.springframework.beans.factory.annotation.Autowired; | 12 | import org.springframework.beans.factory.annotation.Autowired; |
| 11 | import org.springframework.security.authentication.AuthenticationManager; | 13 | import org.springframework.security.authentication.AuthenticationManager; |
| 12 | import org.springframework.security.authentication.BadCredentialsException; | 14 | import org.springframework.security.authentication.BadCredentialsException; |
| @@ -163,7 +165,24 @@ public class SysLoginService | @@ -163,7 +165,24 @@ public class SysLoginService | ||
| 163 | user.setNickName(userJson.getString("name")); | 165 | user.setNickName(userJson.getString("name")); |
| 164 | user.setPassword(userJson.getString("id")); | 166 | user.setPassword(userJson.getString("id")); |
| 165 | SysDept dept = new SysDept(); | 167 | SysDept dept = new SysDept(); |
| 166 | - | 168 | + |
| 169 | + | ||
| 170 | + List<String> poStrings = new ArrayList<String>(); | ||
| 171 | + | ||
| 172 | + for(String str :userJson.getString("postType").split(",")){ | ||
| 173 | + poStrings.add(str); | ||
| 174 | + } | ||
| 175 | + | ||
| 176 | + List<String> rolStrings = new ArrayList<String>(); | ||
| 177 | + | ||
| 178 | + for(String str :userJson.getString("departmentType").split(",")){ | ||
| 179 | + rolStrings.add(str); | ||
| 180 | + } | ||
| 181 | + | ||
| 182 | + user.setPostIds(poStrings); | ||
| 183 | + | ||
| 184 | + user.setRoleIds(rolStrings); | ||
| 185 | + | ||
| 167 | dept.setDeptName(userJson.getString("orgName")); | 186 | dept.setDeptName(userJson.getString("orgName")); |
| 168 | 187 | ||
| 169 | user.setDept(dept); | 188 | user.setDept(dept); |
| @@ -184,9 +203,9 @@ public class SysLoginService | @@ -184,9 +203,9 @@ public class SysLoginService | ||
| 184 | 203 | ||
| 185 | user.setRoles(roles); | 204 | user.setRoles(roles); |
| 186 | 205 | ||
| 187 | - loginUser.setPermissions(set); | ||
| 188 | - | ||
| 189 | token = token.replace("Bearer ", "").replace("auth:token:", ""); | 206 | token = token.replace("Bearer ", "").replace("auth:token:", ""); |
| 207 | + | ||
| 208 | + loginUser.setPermissions(set); | ||
| 190 | 209 | ||
| 191 | loginUser.setToken(token); | 210 | loginUser.setToken(token); |
| 192 | tokenService.refreshToken(loginUser); | 211 | tokenService.refreshToken(loginUser); |
trash-system/src/main/java/com/trash/system/domain/SysUserPost.java
| @@ -14,7 +14,7 @@ public class SysUserPost | @@ -14,7 +14,7 @@ public class SysUserPost | ||
| 14 | private String userId; | 14 | private String userId; |
| 15 | 15 | ||
| 16 | /** 岗位ID */ | 16 | /** 岗位ID */ |
| 17 | - private Long postId; | 17 | + private String postId; |
| 18 | 18 | ||
| 19 | public String getUserId() | 19 | public String getUserId() |
| 20 | { | 20 | { |
| @@ -26,12 +26,12 @@ public class SysUserPost | @@ -26,12 +26,12 @@ public class SysUserPost | ||
| 26 | this.userId = userId; | 26 | this.userId = userId; |
| 27 | } | 27 | } |
| 28 | 28 | ||
| 29 | - public Long getPostId() | 29 | + public String getPostId() |
| 30 | { | 30 | { |
| 31 | return postId; | 31 | return postId; |
| 32 | } | 32 | } |
| 33 | 33 | ||
| 34 | - public void setPostId(Long postId) | 34 | + public void setPostId(String postId) |
| 35 | { | 35 | { |
| 36 | this.postId = postId; | 36 | this.postId = postId; |
| 37 | } | 37 | } |
trash-system/src/main/java/com/trash/system/domain/SysUserRole.java
| @@ -14,7 +14,7 @@ public class SysUserRole | @@ -14,7 +14,7 @@ public class SysUserRole | ||
| 14 | private String userId; | 14 | private String userId; |
| 15 | 15 | ||
| 16 | /** 角色ID */ | 16 | /** 角色ID */ |
| 17 | - private Long roleId; | 17 | + private String roleId; |
| 18 | 18 | ||
| 19 | public String getUserId() | 19 | public String getUserId() |
| 20 | { | 20 | { |
| @@ -26,12 +26,12 @@ public class SysUserRole | @@ -26,12 +26,12 @@ public class SysUserRole | ||
| 26 | this.userId = userId; | 26 | this.userId = userId; |
| 27 | } | 27 | } |
| 28 | 28 | ||
| 29 | - public Long getRoleId() | 29 | + public String getRoleId() |
| 30 | { | 30 | { |
| 31 | return roleId; | 31 | return roleId; |
| 32 | } | 32 | } |
| 33 | 33 | ||
| 34 | - public void setRoleId(Long roleId) | 34 | + public void setRoleId(String roleId) |
| 35 | { | 35 | { |
| 36 | this.roleId = roleId; | 36 | this.roleId = roleId; |
| 37 | } | 37 | } |
trash-system/src/main/java/com/trash/system/service/impl/SysUserServiceImpl.java
| @@ -315,12 +315,12 @@ public class SysUserServiceImpl implements ISysUserService | @@ -315,12 +315,12 @@ public class SysUserServiceImpl implements ISysUserService | ||
| 315 | */ | 315 | */ |
| 316 | public void insertUserRole(SysUser user) | 316 | public void insertUserRole(SysUser user) |
| 317 | { | 317 | { |
| 318 | - Long[] roles = user.getRoleIds(); | 318 | + List<String> roles = user.getRoleIds(); |
| 319 | if (StringUtils.isNotNull(roles)) | 319 | if (StringUtils.isNotNull(roles)) |
| 320 | { | 320 | { |
| 321 | // 新增用户与角色管理 | 321 | // 新增用户与角色管理 |
| 322 | List<SysUserRole> list = new ArrayList<SysUserRole>(); | 322 | List<SysUserRole> list = new ArrayList<SysUserRole>(); |
| 323 | - for (Long roleId : roles) | 323 | + for (String roleId : roles) |
| 324 | { | 324 | { |
| 325 | SysUserRole ur = new SysUserRole(); | 325 | SysUserRole ur = new SysUserRole(); |
| 326 | ur.setUserId(user.getUserId()); | 326 | ur.setUserId(user.getUserId()); |
| @@ -341,12 +341,12 @@ public class SysUserServiceImpl implements ISysUserService | @@ -341,12 +341,12 @@ public class SysUserServiceImpl implements ISysUserService | ||
| 341 | */ | 341 | */ |
| 342 | public void insertUserPost(SysUser user) | 342 | public void insertUserPost(SysUser user) |
| 343 | { | 343 | { |
| 344 | - Long[] posts = user.getPostIds(); | 344 | + List<String> posts = user.getPostIds(); |
| 345 | if (StringUtils.isNotNull(posts)) | 345 | if (StringUtils.isNotNull(posts)) |
| 346 | { | 346 | { |
| 347 | // 新增用户与岗位管理 | 347 | // 新增用户与岗位管理 |
| 348 | List<SysUserPost> list = new ArrayList<SysUserPost>(); | 348 | List<SysUserPost> list = new ArrayList<SysUserPost>(); |
| 349 | - for (Long postId : posts) | 349 | + for (String postId : posts) |
| 350 | { | 350 | { |
| 351 | SysUserPost up = new SysUserPost(); | 351 | SysUserPost up = new SysUserPost(); |
| 352 | up.setUserId(user.getUserId()); | 352 | up.setUserId(user.getUserId()); |
trash-ui/src/router/index.js
| @@ -184,7 +184,7 @@ export const constantRoutes = [ | @@ -184,7 +184,7 @@ export const constantRoutes = [ | ||
| 184 | name: '工作报表', | 184 | name: '工作报表', |
| 185 | meta: { title: '工作报表' } | 185 | meta: { title: '工作报表' } |
| 186 | }, { | 186 | }, { |
| 187 | - path: 'Weeklys/day', | 187 | + path: 'weeklys/day', |
| 188 | component: (resolve) => require(['@/views/daily/report/day'], resolve), | 188 | component: (resolve) => require(['@/views/daily/report/day'], resolve), |
| 189 | name: '工作日报', | 189 | name: '工作日报', |
| 190 | meta: { title: '工作日报' } | 190 | meta: { title: '工作日报' } |
trash-ui/src/views/activiti/task/index.vue
trash-ui/src/views/business/dayWorkReport/index.vue
| @@ -132,6 +132,7 @@ | @@ -132,6 +132,7 @@ | ||
| 132 | projectTypes:null, | 132 | projectTypes:null, |
| 133 | earthsitesTypes:null, | 133 | earthsitesTypes:null, |
| 134 | 134 | ||
| 135 | + outside:["长沙县","望城区","浏阳市","宁乡市","株洲市","湘潭市","汩罗市","湘阴县"], | ||
| 135 | }; | 136 | }; |
| 136 | }, | 137 | }, |
| 137 | created() { | 138 | created() { |
| @@ -179,13 +180,10 @@ | @@ -179,13 +180,10 @@ | ||
| 179 | dayWorkList(this.queryParams).then(response => { | 180 | dayWorkList(this.queryParams).then(response => { |
| 180 | this.threestepList = response.rows; | 181 | this.threestepList = response.rows; |
| 181 | 182 | ||
| 182 | - | ||
| 183 | - | ||
| 184 | getArea().then(res => { | 183 | getArea().then(res => { |
| 185 | this.areas = res.result; | 184 | this.areas = res.result; |
| 186 | for(let i =0;i< this.threestepList.length;i++){ | 185 | for(let i =0;i< this.threestepList.length;i++){ |
| 187 | this.threestepList[i].place = this.getAreaName(this.threestepList[i].place); | 186 | this.threestepList[i].place = this.getAreaName(this.threestepList[i].place); |
| 188 | - | ||
| 189 | if(this.outside.indexOf(this.threestepList[i].place) > -1){ | 187 | if(this.outside.indexOf(this.threestepList[i].place) > -1){ |
| 190 | if(this.threestepList[i].status == 1){ | 188 | if(this.threestepList[i].status == 1){ |
| 191 | this.threestepList[i].estatus = "开工"; | 189 | this.threestepList[i].estatus = "开工"; |
trash-ui/src/views/business/threestep/index.vue
| @@ -829,7 +829,14 @@ | @@ -829,7 +829,14 @@ | ||
| 829 | getThreestep(row.id).then(res=>{ | 829 | getThreestep(row.id).then(res=>{ |
| 830 | this.form = res.data; | 830 | this.form = res.data; |
| 831 | this.form.type = this.form.type + ""; | 831 | this.form.type = this.form.type + ""; |
| 832 | - | 832 | + this.form.place = Number(this.form.place); |
| 833 | + this.bindname = res.data.earthsitesName; | ||
| 834 | + if(res.data.companys){ | ||
| 835 | + this.form.companys = res.data.companys.split(","); | ||
| 836 | + } | ||
| 837 | + if(res.data.companyTrucks){ | ||
| 838 | + this.form.companyTrucks = res.data.companyTrucks.split(","); | ||
| 839 | + } | ||
| 833 | for (let i = 0; i < 13; i++) { | 840 | for (let i = 0; i < 13; i++) { |
| 834 | if (this.form["img" + i]) { | 841 | if (this.form["img" + i]) { |
| 835 | this.form["img" + i] = this.form["img" + i].split(","); | 842 | this.form["img" + i] = this.form["img" + i].split(","); |
trash-workFlow/src/main/java/com/trash/business/controller/SupervisionThreestepController.java
| @@ -69,6 +69,17 @@ public class SupervisionThreestepController extends BaseController | @@ -69,6 +69,17 @@ public class SupervisionThreestepController extends BaseController | ||
| 69 | return getDataTable(list); | 69 | return getDataTable(list); |
| 70 | } | 70 | } |
| 71 | 71 | ||
| 72 | + | ||
| 73 | + /** | ||
| 74 | + * 查询三查机制列表 | ||
| 75 | + */ | ||
| 76 | + @PreAuthorize("@ss.hasPermi('business:threestep:list')") | ||
| 77 | + @PostMapping("/dayWorkList") | ||
| 78 | + public AjaxResult days(@RequestBody SupervisionThreestep supervisionThreestep) | ||
| 79 | + { | ||
| 80 | + return AjaxResult.success(supervisionThreestepService.selectDayWorkListByType(supervisionThreestep)); | ||
| 81 | + } | ||
| 82 | + | ||
| 72 | /** | 83 | /** |
| 73 | * 导出三查机制列表 | 84 | * 导出三查机制列表 |
| 74 | */ | 85 | */ |
trash-workFlow/src/main/java/com/trash/business/domain/SupervisionThreestep.java
| @@ -72,6 +72,8 @@ public class SupervisionThreestep extends BaseEntity | @@ -72,6 +72,8 @@ public class SupervisionThreestep extends BaseEntity | ||
| 72 | /** 运输车辆 */ | 72 | /** 运输车辆 */ |
| 73 | @Excel(name = "运输车辆") | 73 | @Excel(name = "运输车辆") |
| 74 | private String companyTrucks; | 74 | private String companyTrucks; |
| 75 | + | ||
| 76 | + private String params; | ||
| 75 | 77 | ||
| 76 | private String img0; | 78 | private String img0; |
| 77 | 79 |
trash-workFlow/src/main/java/com/trash/business/mapper/SupervisionThreestepMapper.java
| @@ -66,4 +66,6 @@ public interface SupervisionThreestepMapper | @@ -66,4 +66,6 @@ public interface SupervisionThreestepMapper | ||
| 66 | public SupervisionThreestep selectTodayData(SupervisionThreestep supervisionThreestep); | 66 | public SupervisionThreestep selectTodayData(SupervisionThreestep supervisionThreestep); |
| 67 | 67 | ||
| 68 | public List<String> getNames(SupervisionThreestep supervisionThreestep); | 68 | public List<String> getNames(SupervisionThreestep supervisionThreestep); |
| 69 | + | ||
| 70 | + public List<Map> selectDayWorkListByType(SupervisionThreestep supervisionThreestep); | ||
| 69 | } | 71 | } |
trash-workFlow/src/main/java/com/trash/business/service/ISupervisionThreestepService.java
| @@ -70,4 +70,6 @@ public interface ISupervisionThreestepService | @@ -70,4 +70,6 @@ public interface ISupervisionThreestepService | ||
| 70 | public int activeSupervisionThreestep(SupervisionThreestep supervisionThreestep); | 70 | public int activeSupervisionThreestep(SupervisionThreestep supervisionThreestep); |
| 71 | 71 | ||
| 72 | public List<String> getNames(SupervisionThreestep supervisionThreestep); | 72 | public List<String> getNames(SupervisionThreestep supervisionThreestep); |
| 73 | + | ||
| 74 | + public List<Map> selectDayWorkListByType(SupervisionThreestep supervisionThreestep); | ||
| 73 | } | 75 | } |
trash-workFlow/src/main/java/com/trash/business/service/impl/SupervisionThreestepServiceImpl.java
| @@ -213,7 +213,16 @@ public class SupervisionThreestepServiceImpl implements ISupervisionThreestepSer | @@ -213,7 +213,16 @@ public class SupervisionThreestepServiceImpl implements ISupervisionThreestepSer | ||
| 213 | 213 | ||
| 214 | return list; | 214 | return list; |
| 215 | } | 215 | } |
| 216 | + | ||
| 217 | + | ||
| 218 | + @Override | ||
| 219 | + public List<Map> selectDayWorkListByType(SupervisionThreestep supervisionThreestep) { | ||
| 220 | + | ||
| 221 | + return supervisionThreestepMapper.selectDayWorkListByType(supervisionThreestep); | ||
| 216 | 222 | ||
| 223 | + } | ||
| 224 | + | ||
| 225 | + | ||
| 217 | /** | 226 | /** |
| 218 | * 新增三查机制 | 227 | * 新增三查机制 |
| 219 | * | 228 | * |
| @@ -410,4 +419,5 @@ public class SupervisionThreestepServiceImpl implements ISupervisionThreestepSer | @@ -410,4 +419,5 @@ public class SupervisionThreestepServiceImpl implements ISupervisionThreestepSer | ||
| 410 | } | 419 | } |
| 411 | return null; | 420 | return null; |
| 412 | } | 421 | } |
| 422 | + | ||
| 413 | } | 423 | } |
trash-workFlow/src/main/java/com/trash/workflow/service/impl/WorkflowServiceImpl.java
| @@ -185,7 +185,6 @@ public class WorkflowServiceImpl implements IWorkflowService { | @@ -185,7 +185,6 @@ public class WorkflowServiceImpl implements IWorkflowService { | ||
| 185 | .build()); | 185 | .build()); |
| 186 | 186 | ||
| 187 | // List<Task> tasks = taskService.createTaskQuery().processInstanceId(processInstance.getId()).list(); | 187 | // List<Task> tasks = taskService.createTaskQuery().processInstanceId(processInstance.getId()).list(); |
| 188 | -// | ||
| 189 | // for(Task task : tasks){ //测试 当前用户为审批用户 | 188 | // for(Task task : tasks){ //测试 当前用户为审批用户 |
| 190 | // task.setAssignee(SecurityUtils.getUsername()); | 189 | // task.setAssignee(SecurityUtils.getUsername()); |
| 191 | // taskService.saveTask(task); | 190 | // taskService.saveTask(task); |
trash-workFlow/src/main/resources/mapper/SupervisionThreestepMapper.xml
| @@ -63,7 +63,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" | @@ -63,7 +63,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" | ||
| 63 | </resultMap> | 63 | </resultMap> |
| 64 | 64 | ||
| 65 | <sql id="selectSupervisionThreestepVo"> | 65 | <sql id="selectSupervisionThreestepVo"> |
| 66 | - select id, name, type, place, self_check_time, object_id, earthsites_id, create_time, check_time, earthsites_name,check_end_time, contract, companys, company_trucks, img0, img1, img2, img3, img4, img5, img6, img7, img8, img9, img10, img11, img12, sub_img0, sub_img1, sub_img2, sub_img3, sub_img4, sub_img5, sub_img6, sub_img7, sub_img8, sub_img9, sub_img10, sub_img11, sub_img12, person, phone,status,create_by,sub_reason,earth_pip_person,enforce_person,sub_sub_reason,attch_item1,attch_item2,attch_item3 from supervision_threestep | 66 | + select id, name, type, place, self_check_time, object_id, earthsites_id, create_time, check_time, earthsites_name,check_end_time, contract, |
| 67 | + companys, company_trucks, img0, img1, img2, img3, img4, img5, img6, img7, img8, img9, img10, img11, img12, sub_img0, sub_img1, | ||
| 68 | + sub_img2, sub_img3, sub_img4, sub_img5, sub_img6, sub_img7, sub_img8, sub_img9, sub_img10, sub_img11, sub_img12, | ||
| 69 | + person, phone,status,create_by,sub_reason,earth_pip_person,enforce_person,sub_sub_reason,attch_item1,attch_item2,attch_item3 from supervision_threestep | ||
| 67 | </sql> | 70 | </sql> |
| 68 | 71 | ||
| 69 | <select id="selectSupervisionThreestepList" parameterType="SupervisionThreestep" resultMap="SupervisionThreestepResult"> | 72 | <select id="selectSupervisionThreestepList" parameterType="SupervisionThreestep" resultMap="SupervisionThreestepResult"> |
| @@ -148,6 +151,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" | @@ -148,6 +151,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" | ||
| 148 | ORDER BY a.create_time DESC | 151 | ORDER BY a.create_time DESC |
| 149 | </select> | 152 | </select> |
| 150 | 153 | ||
| 154 | + | ||
| 155 | + <select id="selectDayWorkListByType" parameterType="SupervisionThreestep" resultType="java.util.HashMap"> | ||
| 156 | + select object_id id,name,earthsites_id relationSiteId from supervision_threestep | ||
| 157 | + where type = #{type} | ||
| 158 | + and DATE_FORMAT(self_check_time,("%y%m%d")) = DATE_FORMAT(NOW(),("%y%m%d")) | ||
| 159 | + and status = 1 | ||
| 160 | + ORDER BY self_check_time DESC | ||
| 161 | + </select> | ||
| 162 | + | ||
| 163 | + | ||
| 164 | + | ||
| 151 | <select id="selectSupervisionThreestepById" parameterType="Long" resultMap="SupervisionThreestepResult"> | 165 | <select id="selectSupervisionThreestepById" parameterType="Long" resultMap="SupervisionThreestepResult"> |
| 152 | <include refid="selectSupervisionThreestepVo"/> | 166 | <include refid="selectSupervisionThreestepVo"/> |
| 153 | where id = #{id} | 167 | where id = #{id} |