Commit 143645edacc0c6be5c5dc5fa71dc485903f8f5de
1 parent
387d1c80
1
Showing
1 changed file
with
850 additions
and
850 deletions
trash-workFlow/src/main/java/com/trash/workflow/service/impl/WorkflowServiceImpl.java
| 1 | -package com.trash.workflow.service.impl; | ||
| 2 | - | ||
| 3 | -import java.text.SimpleDateFormat; | ||
| 4 | -import java.util.Date; | ||
| 5 | -import java.util.List; | ||
| 6 | -import java.util.Map; | ||
| 7 | -import java.util.stream.Collectors; | ||
| 8 | - | ||
| 9 | -import org.activiti.api.process.model.ProcessInstance; | ||
| 10 | -import org.activiti.api.process.model.builders.ProcessPayloadBuilder; | ||
| 11 | -import org.activiti.api.process.runtime.ProcessRuntime; | ||
| 12 | -import org.activiti.api.task.runtime.TaskRuntime; | ||
| 13 | -import org.activiti.engine.RuntimeService; | ||
| 14 | -import org.activiti.engine.TaskService; | ||
| 15 | -import org.activiti.engine.task.IdentityLink; | ||
| 16 | -import org.activiti.engine.task.Task; | ||
| 17 | -import org.apache.commons.collections4.map.HashedMap; | ||
| 18 | -import org.springframework.beans.factory.annotation.Autowired; | ||
| 19 | -import org.springframework.security.core.context.SecurityContextHolder; | ||
| 20 | -import org.springframework.security.core.context.SecurityContextImpl; | ||
| 21 | -import org.springframework.stereotype.Service; | ||
| 22 | -import org.springframework.transaction.annotation.Transactional; | ||
| 23 | - | ||
| 24 | -import com.alibaba.fastjson.JSONArray; | ||
| 25 | -import com.alibaba.fastjson.JSONObject; | ||
| 26 | -import com.trash.activiti.domain.ActWorkflowFormData; | ||
| 27 | -import com.trash.activiti.service.IActWorkflowFormDataService; | ||
| 28 | -import com.trash.business.domain.ConstructionCredit; | ||
| 29 | -import com.trash.business.domain.ConstructionSign; | ||
| 30 | -import com.trash.business.domain.SupervisionThreestep; | ||
| 31 | -import com.trash.business.service.IConstructionSignService; | ||
| 32 | -import com.trash.business.service.ISupervisionThreestepService; | ||
| 33 | -import com.trash.caseOffline.domain.CaseOffline; | ||
| 34 | -import com.trash.casefile.domain.ViolationCaseFile; | ||
| 35 | -import com.trash.casefile.domain.ViolationWarningInformation; | ||
| 36 | -import com.trash.common.core.domain.entity.SysDictData; | ||
| 37 | -import com.trash.common.core.domain.entity.SysUser; | ||
| 38 | -import com.trash.common.core.redis.RedisCache; | ||
| 39 | -import com.trash.common.utils.DateUtils; | ||
| 40 | -import com.trash.common.utils.RemoteServerUtils; | ||
| 41 | -import com.trash.common.utils.SecurityUtils; | ||
| 42 | -import com.trash.common.utils.StringUtils; | ||
| 43 | -import com.trash.common.utils.spring.SpringUtils; | ||
| 44 | -import com.trash.framework.web.service.SysLoginService; | ||
| 45 | -import com.trash.system.service.ISysDictTypeService; | ||
| 46 | -import com.trash.system.service.ISysUserService; | ||
| 47 | -import com.trash.workflow.domain.Workflow; | ||
| 48 | -import com.trash.workflow.mapper.WorkflowMapper; | ||
| 49 | -import com.trash.workflow.service.IWorkflowService; | ||
| 50 | - | ||
| 51 | -/** | ||
| 52 | - * 请假Service业务层处理 | ||
| 53 | - * | ||
| 54 | - * @author danny | ||
| 55 | - * @date 2020-10-28 | ||
| 56 | - */ | ||
| 57 | -@Service | ||
| 58 | -public class WorkflowServiceImpl implements IWorkflowService { | ||
| 59 | - | ||
| 60 | - @Autowired | ||
| 61 | - private WorkflowMapper workflowMapper; | ||
| 62 | - @Autowired | ||
| 63 | - private ProcessRuntime processRuntime; | ||
| 64 | - @Autowired | ||
| 65 | - private ISysUserService sysUserService; | ||
| 66 | - @Autowired | ||
| 67 | - private TaskService taskService; | ||
| 68 | - | ||
| 69 | - @Autowired | ||
| 70 | - private TaskRuntime taskRuntime; | ||
| 71 | - | ||
| 72 | - @Autowired | ||
| 73 | - IConstructionSignService signService; | ||
| 74 | - | ||
| 75 | - @Autowired | ||
| 76 | - com.trash.common.config.trashConfig trashConfig; | ||
| 77 | - | ||
| 78 | - @Autowired | ||
| 79 | - SysLoginService loginService; | ||
| 80 | - | ||
| 81 | - String siteType[] = { "处理场所", "建筑垃圾资源化处置场", "盾构土环保处置场", "盾构土应急处理场所", "回填场" }; | ||
| 82 | - | ||
| 83 | - String outArea = "株洲市,湘潭市,汨罗市,湘阴县"; | ||
| 84 | - | ||
| 85 | - String tcdOutArea = "长沙县,望城区,浏阳市,宁乡市"; // 车企人外区 | ||
| 86 | - | ||
| 87 | - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); | ||
| 88 | - | ||
| 89 | - String inArea = "芙蓉区,天心区,开福区,雨花区"; | ||
| 90 | - | ||
| 91 | - @Autowired | ||
| 92 | - IActWorkflowFormDataService awfServer; | ||
| 93 | - | ||
| 94 | - @Autowired | ||
| 95 | - RuntimeService runtimeService; | ||
| 96 | - | ||
| 97 | - @Autowired | ||
| 98 | - ISupervisionThreestepService server; | ||
| 99 | - | ||
| 100 | - @Autowired | ||
| 101 | - RedisCache redisCache; | ||
| 102 | - | ||
| 103 | - @Override | ||
| 104 | - @Transactional | ||
| 105 | - public int createWorkFlow(Map<String, Object> data) { // 第三方通用接收接口 | ||
| 106 | - | ||
| 107 | - SysUser user = SecurityUtils.getLoginUser().getUser(); | ||
| 108 | - | ||
| 109 | - String flowType = data.get("type").toString(); | ||
| 110 | - | ||
| 111 | - Map map = (Map) data.get("data"); | ||
| 112 | - | ||
| 113 | - String businessKey = flowType + ":" + map.get("id"); // 流程对应事务key | ||
| 114 | - String title = map.get("title").toString(); | ||
| 115 | - String reason = map.get("reason").toString(); | ||
| 116 | - String startTime = map.get("startTime").toString(); | ||
| 117 | - String endTime = map.get("endTime").toString(); | ||
| 118 | - String areaCode = null; | ||
| 119 | - int index = 0; | ||
| 120 | - JSONArray areas = RemoteServerUtils.getAreas(); | ||
| 121 | - if (map.get("area") != null) { | ||
| 122 | - areaCode = map.get("area").toString(); | ||
| 123 | - | ||
| 124 | - if (flowType.equals("workflow_vehicle") || flowType.equals("workflow_company") | ||
| 125 | - || flowType.equals("workflow_driver")) { | ||
| 126 | - for (Object obj : areas) { | ||
| 127 | - JSONObject jsonObject = (JSONObject) obj; | ||
| 128 | - if (areaCode.equals(jsonObject.getString("code"))) { | ||
| 129 | - if (tcdOutArea.contains(jsonObject.getString("name"))) { | ||
| 130 | - index = 1; | ||
| 131 | - } | ||
| 132 | - break; | ||
| 133 | - } | ||
| 134 | - } | ||
| 135 | - }else if (flowType.equals("workflow_earthsites")|| flowType.equals("workflow_earthsites_edit")) { | ||
| 136 | - for (Object obj : areas) { | ||
| 137 | - JSONObject jsonObject = (JSONObject) obj; | ||
| 138 | - if (areaCode.equals(jsonObject.getString("code"))) { | ||
| 139 | - if (inArea.contains(jsonObject.getString("name"))) { | ||
| 140 | - index = 2; | ||
| 141 | - } | ||
| 142 | - if (tcdOutArea.contains(jsonObject.getString("name"))||jsonObject.getString("name").contains("湘江") ) { | ||
| 143 | - index = 1; | ||
| 144 | - } | ||
| 145 | - break; | ||
| 146 | - } | ||
| 147 | - } | ||
| 148 | - } else { | ||
| 149 | - for (Object obj : areas) { | ||
| 150 | - JSONObject jsonObject = (JSONObject) obj; | ||
| 151 | - if (areaCode.equals(jsonObject.getString("code"))) { | ||
| 152 | - if (outArea.contains(jsonObject.getString("name"))) { | ||
| 153 | - index = 1; | ||
| 154 | - } | ||
| 155 | - break; | ||
| 156 | - } | ||
| 157 | - } | ||
| 158 | - } | ||
| 159 | - } | ||
| 160 | - | ||
| 161 | - ProcessInstance processInstance = null; | ||
| 162 | - ActWorkflowFormData awf = null; | ||
| 163 | - | ||
| 164 | - try { | ||
| 165 | - | ||
| 166 | - processInstance = processRuntime.start(ProcessPayloadBuilder.start().withProcessDefinitionKey(flowType) | ||
| 167 | - .withName(title).withVariable("route", index).withBusinessKey(businessKey).build()); | ||
| 168 | - | ||
| 169 | - if (areaCode != null) { | ||
| 170 | - PorcThreeStepTask(processInstance, areaCode); | ||
| 171 | - } | ||
| 172 | - | ||
| 173 | - if (flowType.equals("workflow_constructsite")) { | ||
| 174 | - | ||
| 175 | - ConstructionSign constructionSign = new ConstructionSign(); | ||
| 176 | - | ||
| 177 | - constructionSign.setObjectId(map.get("id").toString()); | ||
| 178 | - | ||
| 179 | - if (!user.getAvatar().contains("null")) { | ||
| 180 | - constructionSign.setSign1(SecurityUtils.getLoginUser().getUser().getAvatar()); | ||
| 181 | - constructionSign.setSign1Time(new Date()); | ||
| 182 | - } | ||
| 183 | - | ||
| 184 | - signService.insertConstructionSign(constructionSign); | ||
| 185 | - | ||
| 186 | - } | ||
| 187 | - | ||
| 188 | - Workflow workflow = new Workflow(); | ||
| 189 | - workflow.setId(businessKey); | ||
| 190 | - workflow.setTitle(title); | ||
| 191 | - workflow.setReason(reason); | ||
| 192 | - workflow.setStartTime(startTime); | ||
| 193 | - workflow.setEndTime(endTime); | ||
| 194 | - workflow.setType(map.get("type").toString()); | ||
| 195 | - workflow.setInstanceId(processInstance.getId()); | ||
| 196 | - workflow.setState("0"); | ||
| 197 | - workflow.setCreateTime(new Date()); | ||
| 198 | - workflow.setCreateBy(user.getUserName()); | ||
| 199 | - workflow.setCreateName(user.getUserName()); | ||
| 200 | - | ||
| 201 | - awf = insertAwf(user, workflow); | ||
| 202 | - | ||
| 203 | - return workflowMapper.insertWorkflow(workflow); | ||
| 204 | - } catch (Exception e) { | ||
| 205 | - | ||
| 206 | - if (processInstance != null) | ||
| 207 | - processRuntime.delete(ProcessPayloadBuilder.delete(processInstance)); | ||
| 208 | - | ||
| 209 | - if (awf.getId() != null) | ||
| 210 | - awfServer.deleteActWorkflowFormDataById(awf.getId()); | ||
| 211 | - | ||
| 212 | - e.printStackTrace(); | ||
| 213 | - } | ||
| 214 | - | ||
| 215 | - return 0; | ||
| 216 | - } | ||
| 217 | - | ||
| 218 | - private ActWorkflowFormData insertAwf(SysUser user, Workflow workflow) { | ||
| 219 | - | ||
| 220 | - if (user == null) { | ||
| 221 | - user = new SysUser(); | ||
| 222 | - user.setUserName("长沙市建筑垃圾智慧监管平台"); | ||
| 223 | - } | ||
| 224 | - | ||
| 225 | - ActWorkflowFormData awf; | ||
| 226 | - awf = new ActWorkflowFormData(); | ||
| 227 | - awf.setCreateBy(user.getUserName()); | ||
| 228 | - awf.setCreateName(user.getUserName()); | ||
| 229 | - awf.setCreateTime(new Date()); | ||
| 230 | - awf.setBusinessKey(workflow.getId()); | ||
| 231 | - awf.setControlId("CREATED"); | ||
| 232 | - awf.setControlName("发起人"); | ||
| 233 | - awf.setFormKey("CREATED"); | ||
| 234 | - awf.setTaskNodeName(user.getUserName() + "发起"); | ||
| 235 | - awf.setControlValue(workflow.getReason()); | ||
| 236 | - | ||
| 237 | - awfServer.insertActWorkflowFormData(awf); | ||
| 238 | - return awf; | ||
| 239 | - } | ||
| 240 | - | ||
| 241 | - @Override | ||
| 242 | - @Transactional | ||
| 243 | - public int createLeaveWorkFlow(Workflow workflow, int index) { | ||
| 244 | - ProcessInstance processInstance = null; | ||
| 245 | - | ||
| 246 | - ActWorkflowFormData awf = null; | ||
| 247 | - | ||
| 248 | - SysUser user = SecurityUtils.getLoginUser().getUser(); | ||
| 249 | - | ||
| 250 | - try { | ||
| 251 | - | ||
| 252 | - processInstance = processRuntime.start(ProcessPayloadBuilder.start() | ||
| 253 | - .withProcessDefinitionKey("workflow_leave").withName(workflow.getTitle()) | ||
| 254 | - .withBusinessKey(workflow.getId()).withVariable("route", index).build()); | ||
| 255 | - | ||
| 256 | - Task task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult(); | ||
| 257 | - | ||
| 258 | - if (task != null) { | ||
| 259 | - | ||
| 260 | - task.setDescription(SecurityUtils.getLoginUser().getUser().getRoleIds().get(0)); | ||
| 261 | - | ||
| 262 | - List<IdentityLink> list = taskService.getIdentityLinksForTask(task.getId()); | ||
| 263 | - | ||
| 264 | - if (list.size() == 1) { | ||
| 265 | - taskService.addCandidateUser(task.getId(), task.getDescription()); | ||
| 266 | - } | ||
| 267 | - | ||
| 268 | - taskService.saveTask(task); | ||
| 269 | - } | ||
| 270 | - | ||
| 271 | - awf = insertAwf(user, workflow); | ||
| 272 | - | ||
| 273 | - workflow.setInstanceId(processInstance.getId()); | ||
| 274 | - | ||
| 275 | - workflow.setCreateTime(new Date()); | ||
| 276 | - return workflowMapper.insertWorkflow(workflow); | ||
| 277 | - } catch (Exception e) { | ||
| 278 | - | ||
| 279 | - if (awf.getId() != null) | ||
| 280 | - awfServer.deleteActWorkflowFormDataById(awf.getId()); | ||
| 281 | - processRuntime.delete(ProcessPayloadBuilder.delete(processInstance)); | ||
| 282 | - | ||
| 283 | - e.printStackTrace(); | ||
| 284 | - } | ||
| 285 | - | ||
| 286 | - return 0; | ||
| 287 | - } | ||
| 288 | - | ||
| 289 | - @Override | ||
| 290 | - @Transactional | ||
| 291 | - public int createDropPointWorkFlow(Map<String, String> droppoint) { // 三查 | ||
| 292 | - ProcessInstance processInstance = null; | ||
| 293 | - ActWorkflowFormData awf = null; | ||
| 294 | - try { | ||
| 295 | - String name = "投放点审批:" + droppoint.get("name"); | ||
| 296 | - | ||
| 297 | - processInstance = processRuntime | ||
| 298 | - .start(ProcessPayloadBuilder.start().withProcessDefinitionKey("workflow_drop_point").withName(name) | ||
| 299 | - .withBusinessKey("workflow_drop_point:" + droppoint.get("id")).build()); | ||
| 300 | - | ||
| 301 | - PorcThreeStepTask(processInstance, droppoint.get("area")); | ||
| 302 | - | ||
| 303 | - Workflow workflow = new Workflow(); | ||
| 304 | - workflow.setId("workflow_drop_point:" + droppoint.get("id")); | ||
| 305 | - workflow.setTitle(name); | ||
| 306 | - workflow.setReason(droppoint.get("name") + "审批流程"); | ||
| 307 | - workflow.setStartTime(sdf.format(new Date())); | ||
| 308 | - workflow.setEndTime(sdf.format(new Date())); | ||
| 309 | - workflow.setType("投放点审批"); | ||
| 310 | - workflow.setInstanceId(processInstance.getId()); | ||
| 311 | - workflow.setState("0"); | ||
| 312 | - workflow.setCreateTime(new Date()); | ||
| 313 | - | ||
| 314 | - SysUser user = SecurityUtils.getLoginUser().getUser(); | ||
| 315 | - awf = insertAwf(user, workflow); | ||
| 316 | - | ||
| 317 | - return workflowMapper.insertWorkflow(workflow); | ||
| 318 | - } catch (Exception e) { | ||
| 319 | - e.printStackTrace(); | ||
| 320 | - if (awf.getId() != null) | ||
| 321 | - awfServer.deleteActWorkflowFormDataById(awf.getId()); | ||
| 322 | - processRuntime.delete(ProcessPayloadBuilder.delete(processInstance)); | ||
| 323 | - } | ||
| 324 | - | ||
| 325 | - return 0; | ||
| 326 | - } | ||
| 327 | - | ||
| 328 | - @Override | ||
| 329 | - @Transactional | ||
| 330 | - public int createThreeStepWorkFlow(SupervisionThreestep supervision) { // 三查 | ||
| 331 | - ProcessInstance processInstance = null; | ||
| 332 | - ActWorkflowFormData awf = null; | ||
| 333 | - try { | ||
| 334 | - String name = "报工自查:" + supervision.getName(); | ||
| 335 | - | ||
| 336 | - JSONArray areas = redisCache.getCacheObject("areas"); | ||
| 337 | - | ||
| 338 | - int route = 0; | ||
| 339 | - | ||
| 340 | - if (areas == null) { | ||
| 341 | - areas = RemoteServerUtils.getAreas(); | ||
| 342 | - redisCache.setCacheObject("areas", areas); | ||
| 343 | - } | ||
| 344 | - | ||
| 345 | - for (Object obj : areas) { | ||
| 346 | - JSONObject jsonObject = (JSONObject) obj; | ||
| 347 | - if (supervision.getPlace().equals(jsonObject.getString("code"))) { | ||
| 348 | - if (jsonObject.getString("name").contains("湘江新区")) { | ||
| 349 | - route = 1; | ||
| 350 | - } | ||
| 351 | - break; | ||
| 352 | - } | ||
| 353 | - } | ||
| 354 | - | ||
| 355 | - processInstance = processRuntime.start(ProcessPayloadBuilder.start() | ||
| 356 | - .withProcessDefinitionKey("workflow_threestep").withName(name).withVariable("route", route) | ||
| 357 | - .withBusinessKey("workflow_threestep:" + supervision.getId()).build()); | ||
| 358 | - | ||
| 359 | - PorcThreeStepTask(processInstance, supervision.getPlace()); | ||
| 360 | - | ||
| 361 | - Workflow workflow = new Workflow(); | ||
| 362 | - workflow.setId("workflow_threestep:" + supervision.getId()); | ||
| 363 | - workflow.setTitle(name); | ||
| 364 | - workflow.setReason("报工自查"); | ||
| 365 | - workflow.setStartTime(sdf.format(supervision.getSelfCheckTime())); | ||
| 366 | - workflow.setEndTime(sdf.format(supervision.getSelfCheckTime())); | ||
| 367 | - workflow.setType("报工审批"); | ||
| 368 | - workflow.setInstanceId(processInstance.getId()); | ||
| 369 | - workflow.setState("0"); | ||
| 370 | - workflow.setCreateTime(new Date()); | ||
| 371 | - | ||
| 372 | - SysUser user = SecurityUtils.getLoginUser().getUser(); | ||
| 373 | - awf = insertAwf(user, workflow); | ||
| 374 | - | ||
| 375 | - return workflowMapper.insertWorkflow(workflow); | ||
| 376 | - } catch (Exception e) { | ||
| 377 | - e.printStackTrace(); | ||
| 378 | - if (awf.getId() != null) | ||
| 379 | - awfServer.deleteActWorkflowFormDataById(awf.getId()); | ||
| 380 | - processRuntime.delete(ProcessPayloadBuilder.delete(processInstance)); | ||
| 381 | - } | ||
| 382 | - | ||
| 383 | - return 0; | ||
| 384 | - } | ||
| 385 | - | ||
| 386 | -// @Override | ||
| 387 | -// @Transactional | ||
| 388 | -// public int createCaseFileByTask(ViolationCaseFile caseFile, int index) { // 违规预警案卷 | ||
| 389 | -// | ||
| 390 | -// if (StringUtils.isEmpty(RemoteServerUtils.remote)) { | ||
| 391 | -// RemoteServerUtils.remote = trashConfig.getRemotePath(); | ||
| 392 | -// } | ||
| 393 | -// loginService.loginByRemote(trashConfig.getToken()); | ||
| 394 | -// | ||
| 395 | -// SysUser user = null; | ||
| 396 | -// | ||
| 397 | -// try { | ||
| 398 | -// user = SecurityUtils.getLoginUser().getUser(); | ||
| 399 | -// } catch (Exception e) { | ||
| 400 | -// // e.printStackTrace(); | ||
| 401 | -// } | ||
| 402 | -// | ||
| 403 | -// SecurityContextImpl securityContextImpl = new SecurityContextImpl(); | ||
| 404 | -// | ||
| 405 | -// securityContextImpl.setAuthentication(SecurityContextHolder.getContext().getAuthentication()); | ||
| 406 | -// org.activiti.engine.runtime.ProcessInstance instance = null; | ||
| 407 | -// String title = "案卷号:" + caseFile.getNumber(); | ||
| 408 | -// String flowType = "workflow_casefile"; | ||
| 409 | -// | ||
| 410 | -// if (index > 0 && caseFile.getOwningRegion().contains("湘江新区")) { | ||
| 411 | -// index += 3; | ||
| 412 | -// } | ||
| 413 | -// ActWorkflowFormData awf = null; | ||
| 414 | -// | ||
| 415 | -// try { | ||
| 416 | -// Map map = new HashedMap<>(); | ||
| 417 | -// | ||
| 418 | -// map.put("route", index); | ||
| 419 | -// instance = runtimeService.createProcessInstanceBuilder().businessKey(flowType + ":" + caseFile.getId()) | ||
| 420 | -// .name(title).variable("route", index).processDefinitionKey(flowType).variables(map).start(); | ||
| 421 | -// | ||
| 422 | -// // runtimeService.startProcessInstanceById(instance.getProcessDefinitionId(),map); | ||
| 423 | -// | ||
| 424 | -// if (index == 0) { | ||
| 425 | -// Task task = taskService.createTaskQuery().processInstanceId(instance.getId()).singleResult(); | ||
| 426 | -// | ||
| 427 | -// task.setAssignee(caseFile.getAbbreviation()); | ||
| 428 | -// | ||
| 429 | -// task.setDescription(caseFile.getAbbreviation()); | ||
| 430 | -// taskService.saveTask(task); | ||
| 431 | -// } else { | ||
| 432 | -// updateProcessKafka(instance, caseFile.getOwningRegion(), trashConfig.getToken()); | ||
| 433 | -// } | ||
| 434 | -// | ||
| 435 | -// Workflow workflow = new Workflow(); | ||
| 436 | -// workflow.setId(flowType + ":" + caseFile.getId()); | ||
| 437 | -// workflow.setTitle(title); | ||
| 438 | -// workflow.setReason("平台案卷"); | ||
| 439 | -// workflow.setStartTime(sdf.format(caseFile.getCreateTime())); | ||
| 440 | -// workflow.setEndTime(sdf.format(caseFile.getCreateTime())); | ||
| 441 | -// workflow.setType("违规案卷处置流程"); | ||
| 442 | -// workflow.setInstanceId(instance.getId()); | ||
| 443 | -// workflow.setState("0"); | ||
| 444 | -// workflow.setCreateTime(new Date()); | ||
| 445 | -// | ||
| 446 | -// awf = insertAwf(user, workflow); | ||
| 447 | -// | ||
| 448 | -// return workflowMapper.insertWorkflow(workflow); | ||
| 449 | -// } catch (Exception e) { | ||
| 450 | -// if (awf.getId() != null) | ||
| 451 | -// awfServer.deleteActWorkflowFormDataById(awf.getId()); | ||
| 452 | -// runtimeService.deleteProcessInstance(instance.getId(), "创建失败"); | ||
| 453 | -// throw new RuntimeException(e); | ||
| 454 | -// } | ||
| 455 | -// | ||
| 456 | -// } | ||
| 457 | - | ||
| 458 | - @Override | ||
| 459 | - @Transactional | ||
| 460 | - public int createCaseFile(ViolationCaseFile caseFile, int index) { // 三查 | ||
| 461 | - ProcessInstance processInstance = null; | ||
| 462 | - ActWorkflowFormData awf = null; | ||
| 463 | - String title = "案卷号:" + caseFile.getNumber(); | ||
| 464 | - String flowType = "workflow_casefile"; | ||
| 465 | - try { | ||
| 466 | - List<SysDictData> caseType = SpringUtils.getBean(ISysDictTypeService.class) | ||
| 467 | - .selectDictDataByType("vio_casefile"); | ||
| 468 | - | ||
| 469 | - for (SysDictData d : caseType) { | ||
| 470 | - if (caseFile.getViolationType().equals(d.getDictValue())) { | ||
| 471 | - if (d.getRemark() != null) { | ||
| 472 | - index = 1; | ||
| 473 | - } | ||
| 474 | - break; | ||
| 475 | - } | ||
| 476 | - } | ||
| 477 | - | ||
| 478 | - if(index == 0){ | ||
| 479 | - if (tcdOutArea.indexOf(caseFile.getOwningRegion()) > -1) { | ||
| 480 | - index = 2; | ||
| 481 | - } | ||
| 482 | - | ||
| 483 | - if ("湘江新区".equals(caseFile.getOwningRegion())) { | ||
| 484 | - index = 3; | ||
| 485 | - } | ||
| 486 | - } | ||
| 487 | - | ||
| 488 | - | ||
| 489 | - | ||
| 490 | - | ||
| 491 | - processInstance = processRuntime | ||
| 492 | - .start(ProcessPayloadBuilder.start().withProcessDefinitionKey(flowType).withName(title) | ||
| 493 | - .withBusinessKey(flowType + ":" + caseFile.getId()).withVariable("route", index).build()); | ||
| 494 | - | ||
| 495 | - | ||
| 496 | - updateProcess(processInstance, caseFile.getOwningRegion()); | ||
| 497 | - | ||
| 498 | - | ||
| 499 | - Workflow workflow = new Workflow(); | ||
| 500 | - workflow.setId(flowType + ":" + caseFile.getId()); | ||
| 501 | - workflow.setTitle(title); | ||
| 502 | - workflow.setReason("平台案卷"); | ||
| 503 | - workflow.setStartTime(sdf.format(caseFile.getCreateTime())); | ||
| 504 | - workflow.setEndTime(sdf.format(caseFile.getCreateTime())); | ||
| 505 | - workflow.setType("违规案卷处置流程"); | ||
| 506 | - workflow.setInstanceId(processInstance.getId()); | ||
| 507 | - workflow.setState("0"); | ||
| 508 | - workflow.setCreateTime(new Date()); | ||
| 509 | - | ||
| 510 | - SysUser user = SecurityUtils.getLoginUser().getUser(); | ||
| 511 | - awf = insertAwf(user, workflow); | ||
| 512 | - return workflowMapper.insertWorkflow(workflow); | ||
| 513 | - } catch (Exception e) { | ||
| 514 | - e.printStackTrace(); | ||
| 515 | - if (awf.getId() != null) | ||
| 516 | - awfServer.deleteActWorkflowFormDataById(awf.getId()); | ||
| 517 | - processRuntime.delete(ProcessPayloadBuilder.delete(processInstance)); | ||
| 518 | - throw new RuntimeException(e); | ||
| 519 | - } | ||
| 520 | - } | ||
| 521 | - | ||
| 522 | - @Override | ||
| 523 | - @Transactional | ||
| 524 | - public int createCaseFile1(ViolationWarningInformation caseFile, int index, int isAuto) { // 违规预警案卷 | ||
| 525 | - if (isAuto == 1) { | ||
| 526 | - if (StringUtils.isEmpty(RemoteServerUtils.remote)) { | ||
| 527 | - RemoteServerUtils.remote = trashConfig.getRemotePath(); | ||
| 528 | - } | ||
| 529 | - loginService.loginByRemote(trashConfig.getToken()); | ||
| 530 | - } | ||
| 531 | - | ||
| 532 | - SysUser user = null; | ||
| 533 | - | ||
| 534 | - try { | ||
| 535 | - user = SecurityUtils.getLoginUser().getUser(); | ||
| 536 | - } catch (Exception e) { | ||
| 537 | - // e.printStackTrace(); | ||
| 538 | - } | ||
| 539 | - | ||
| 540 | - SecurityContextImpl securityContextImpl = new SecurityContextImpl(); | ||
| 541 | - | ||
| 542 | - securityContextImpl.setAuthentication(SecurityContextHolder.getContext().getAuthentication()); | ||
| 543 | - org.activiti.engine.runtime.ProcessInstance instance = null; | ||
| 544 | - String title = "案卷号:" + caseFile.getNumber(); | ||
| 545 | - String flowType = "violation_warning"; | ||
| 546 | - | ||
| 547 | - if (index > 0 && caseFile.getOwningRegion().contains("湘江新区")) { | ||
| 548 | - index += 3; | ||
| 549 | - } | ||
| 550 | - ActWorkflowFormData awf = null; | ||
| 551 | - | ||
| 552 | - try { | ||
| 553 | - Map map = new HashedMap<>(); | ||
| 554 | - | ||
| 555 | - map.put("route", index); | ||
| 556 | - instance = runtimeService.createProcessInstanceBuilder().businessKey(flowType + ":" + caseFile.getId()) | ||
| 557 | - .name(title).variable("route", index).processDefinitionKey(flowType).variables(map).start(); | ||
| 558 | - | ||
| 559 | - // runtimeService.startProcessInstanceById(instance.getProcessDefinitionId(),map); | ||
| 560 | - | ||
| 561 | - if (index == 0) { | ||
| 562 | - Task task = taskService.createTaskQuery().processInstanceId(instance.getId()).singleResult(); | ||
| 563 | - | ||
| 564 | - task.setAssignee(caseFile.getAbbreviation()); | ||
| 565 | - task.setDescription(caseFile.getAbbreviation()); | ||
| 566 | - | ||
| 567 | - taskService.saveTask(task); | ||
| 568 | - } else { | ||
| 569 | - updateProcessKafka(instance, caseFile.getOwningRegion(), trashConfig.getToken()); | ||
| 570 | - } | ||
| 571 | - | ||
| 572 | - Workflow workflow = new Workflow(); | ||
| 573 | - workflow.setId(flowType + ":" + caseFile.getId()); | ||
| 574 | - workflow.setTitle(title); | ||
| 575 | - workflow.setReason("违规预警信息"); | ||
| 576 | - workflow.setStartTime(sdf.format(caseFile.getCreateTime())); | ||
| 577 | - workflow.setEndTime(sdf.format(caseFile.getCreateTime())); | ||
| 578 | - workflow.setType("平台预警信息"); | ||
| 579 | - workflow.setInstanceId(instance.getId()); | ||
| 580 | - workflow.setState("0"); | ||
| 581 | - workflow.setCreateTime(new Date()); | ||
| 582 | - | ||
| 583 | - awf = insertAwf(user, workflow); | ||
| 584 | - | ||
| 585 | - return workflowMapper.insertWorkflow(workflow); | ||
| 586 | - } catch (Exception e) { | ||
| 587 | - if (awf.getId() != null) | ||
| 588 | - awfServer.deleteActWorkflowFormDataById(awf.getId()); | ||
| 589 | - runtimeService.deleteProcessInstance(instance.getId(), "创建失败"); | ||
| 590 | - throw new RuntimeException(e); | ||
| 591 | - } | ||
| 592 | - | ||
| 593 | - } | ||
| 594 | - | ||
| 595 | - @Override | ||
| 596 | - @Transactional | ||
| 597 | - public int createCaseOffline(CaseOffline caseOffline) { // 三查 | ||
| 598 | - ProcessInstance processInstance = null; | ||
| 599 | - ActWorkflowFormData awf = null; | ||
| 600 | - try { | ||
| 601 | - | ||
| 602 | - String title = "案卷号:" + caseOffline.getNumber(); | ||
| 603 | - int index = 0; | ||
| 604 | - | ||
| 605 | - List<SysDictData> caseType = SpringUtils.getBean(ISysDictTypeService.class) | ||
| 606 | - .selectDictDataByType("case_offline_type"); | ||
| 607 | - | ||
| 608 | - for (SysDictData d : caseType) { | ||
| 609 | - if (caseOffline.getType().equals(d.getDictValue())) { | ||
| 610 | - if (d.getRemark() != null) { | ||
| 611 | - index = 1; | ||
| 612 | - } | ||
| 613 | - break; | ||
| 614 | - } | ||
| 615 | - } | ||
| 616 | - | ||
| 617 | - if(index == 0){ | ||
| 618 | - JSONArray array = RemoteServerUtils.getAreas(); | ||
| 619 | - String placeName = ""; | ||
| 620 | - String placeCode = caseOffline.getPlace(); | ||
| 621 | - | ||
| 622 | - for (Object obj : array) { | ||
| 623 | - if (((JSONObject) (obj)).getString("code").equals(placeCode)) { | ||
| 624 | - placeName = ((JSONObject) (obj)).getString("name"); | ||
| 625 | - if ("湘江新区".equals(placeName)) { | ||
| 626 | - index = 3; | ||
| 627 | - } | ||
| 628 | - | ||
| 629 | - break; | ||
| 630 | - } | ||
| 631 | - } | ||
| 632 | - | ||
| 633 | - if (tcdOutArea.indexOf(placeName) > -1) { | ||
| 634 | - index = 2; | ||
| 635 | - } | ||
| 636 | - } | ||
| 637 | - | ||
| 638 | - | ||
| 639 | - processInstance = processRuntime | ||
| 640 | - .start(ProcessPayloadBuilder.start().withProcessDefinitionKey("workflow_caseoffline") | ||
| 641 | - .withName(title).withBusinessKey("workflow_caseoffline:" + caseOffline.getId()) | ||
| 642 | - .withVariable("route", index).build()); | ||
| 643 | - | ||
| 644 | - PorcThreeStepTask(processInstance, caseOffline.getPlace()); | ||
| 645 | - | ||
| 646 | - Workflow workflow = new Workflow(); | ||
| 647 | - workflow.setId("workflow_caseoffline:" + caseOffline.getId()); | ||
| 648 | - workflow.setTitle(title); | ||
| 649 | - workflow.setReason("案卷线下交办"); | ||
| 650 | - workflow.setStartTime(sdf.format(caseOffline.getCreateTime())); | ||
| 651 | - workflow.setEndTime(sdf.format(caseOffline.getCreateTime())); | ||
| 652 | - workflow.setType("交办案卷"); | ||
| 653 | - workflow.setInstanceId(processInstance.getId()); | ||
| 654 | - workflow.setState("0"); | ||
| 655 | - workflow.setCreateTime(new Date()); | ||
| 656 | - | ||
| 657 | - SysUser user = null; | ||
| 658 | - | ||
| 659 | - try { | ||
| 660 | - user = SecurityUtils.getLoginUser().getUser(); | ||
| 661 | - } catch (Exception e) { | ||
| 662 | - // e.printStackTrace(); | ||
| 663 | - } | ||
| 664 | - | ||
| 665 | - awf = insertAwf(user, workflow); | ||
| 666 | - | ||
| 667 | - return workflowMapper.insertWorkflow(workflow); | ||
| 668 | - } catch (Exception e) { | ||
| 669 | - if (awf.getId() != null) | ||
| 670 | - awfServer.deleteActWorkflowFormDataById(awf.getId()); | ||
| 671 | - e.printStackTrace(); | ||
| 672 | - processRuntime.delete(ProcessPayloadBuilder.delete(processInstance)); | ||
| 673 | - } | ||
| 674 | - | ||
| 675 | - return 0; | ||
| 676 | - } | ||
| 677 | - | ||
| 678 | - private void updateProcess(ProcessInstance processInstance, String owningRegion) { | ||
| 679 | - | ||
| 680 | - JSONArray array = RemoteServerUtils.getAreas(); | ||
| 681 | - | ||
| 682 | - String placeCode = null; | ||
| 683 | - | ||
| 684 | - for (Object obj : array) { | ||
| 685 | - if (((JSONObject) (obj)).getString("name").equals(owningRegion)) { | ||
| 686 | - | ||
| 687 | - placeCode = ((JSONObject) (obj)).getString("code"); | ||
| 688 | - | ||
| 689 | - break; | ||
| 690 | - } | ||
| 691 | - } | ||
| 692 | - | ||
| 693 | - if (placeCode != null) { | ||
| 694 | - PorcThreeStepTask(processInstance, placeCode); | ||
| 695 | - } | ||
| 696 | - | ||
| 697 | - } | ||
| 698 | - | ||
| 699 | - public void PorcThreeStepTask(ProcessInstance processInstance, String areaCode) { | ||
| 700 | - Map map = new HashedMap<>(); | ||
| 701 | - | ||
| 702 | - map.put("type", "CSUserDepartmentType"); | ||
| 703 | - | ||
| 704 | - Task task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult(); | ||
| 705 | - | ||
| 706 | - List<IdentityLink> list = taskService.getIdentityLinksForTask(task.getId()); | ||
| 707 | - | ||
| 708 | - if (list.size() == 1) { | ||
| 709 | - taskService.addCandidateUser(task.getId(), areaCode); | ||
| 710 | - } | ||
| 711 | - | ||
| 712 | - task.setDescription(areaCode); | ||
| 713 | - | ||
| 714 | - taskService.saveTask(task); | ||
| 715 | - } | ||
| 716 | - | ||
| 717 | - void updateProcessKafka(org.activiti.engine.runtime.ProcessInstance processInstance, String placeName, | ||
| 718 | - String token) { | ||
| 719 | - JSONArray array = RemoteServerUtils.getAreas(trashConfig.getToken()); | ||
| 720 | - | ||
| 721 | - String placeCode = null; | ||
| 722 | - | ||
| 723 | - for (Object obj : array) { | ||
| 724 | - if (((JSONObject) (obj)).getString("name").equals(placeName)) { | ||
| 725 | - | ||
| 726 | - placeCode = ((JSONObject) (obj)).getString("code"); | ||
| 727 | - | ||
| 728 | - break; | ||
| 729 | - } | ||
| 730 | - } | ||
| 731 | - | ||
| 732 | - if (placeCode != null) { | ||
| 733 | - Task task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult(); | ||
| 734 | - | ||
| 735 | - List<IdentityLink> list = taskService.getIdentityLinksForTask(task.getId()); | ||
| 736 | - | ||
| 737 | - for (IdentityLink identityLink : list) { | ||
| 738 | - // if(identityLink.getGroupId() != null) | ||
| 739 | - // taskService.deleteGroupIdentityLink(task.getId(), | ||
| 740 | - // identityLink.getGroupId(), identityLink.getType()); | ||
| 741 | - if (identityLink.getUserId() != null) | ||
| 742 | - taskService.deleteUserIdentityLink(task.getId(), identityLink.getUserId(), identityLink.getType()); | ||
| 743 | - } | ||
| 744 | - | ||
| 745 | - taskService.addCandidateUser(task.getId(), placeCode); | ||
| 746 | - | ||
| 747 | - task.setDescription(placeCode); | ||
| 748 | - | ||
| 749 | - taskService.saveTask(task); | ||
| 750 | - } | ||
| 751 | - } | ||
| 752 | - | ||
| 753 | - /** | ||
| 754 | - * 查询请假 | ||
| 755 | - * | ||
| 756 | - * @param id | ||
| 757 | - * 请假ID | ||
| 758 | - * @return 请假 | ||
| 759 | - */ | ||
| 760 | - @Override | ||
| 761 | - public Workflow selectWorkflowById(String id) { | ||
| 762 | - return workflowMapper.selectWorkflowById(id); | ||
| 763 | - } | ||
| 764 | - | ||
| 765 | - /** | ||
| 766 | - * 查询请假列表 | ||
| 767 | - * | ||
| 768 | - * @param Workflow | ||
| 769 | - * 请假 | ||
| 770 | - * @return 请假 | ||
| 771 | - */ | ||
| 772 | - @Override | ||
| 773 | - public List<Workflow> selectWorkflowList(Workflow Workflow) { | ||
| 774 | - return workflowMapper.selectWorkflowListByWorkflowAndDeptId(Workflow, | ||
| 775 | - SecurityUtils.getLoginUser().getUser().getDeptId()); | ||
| 776 | - } | ||
| 777 | - | ||
| 778 | - /** | ||
| 779 | - * 查询请假列表带任务状态 | ||
| 780 | - * | ||
| 781 | - * @param Workflow | ||
| 782 | - * 请假 | ||
| 783 | - * @return 请假 | ||
| 784 | - */ | ||
| 785 | - @Override | ||
| 786 | - public List<Workflow> selectWorkflowAndTaskNameList(Workflow Workflow) { | ||
| 787 | - List<Workflow> Workflows = workflowMapper.selectWorkflowList(Workflow); | ||
| 788 | - List<String> collect = Workflows.parallelStream().map(wl -> wl.getInstanceId()).collect(Collectors.toList()); | ||
| 789 | - if (collect != null && !collect.isEmpty()) { | ||
| 790 | - List<Task> tasks = taskService.createTaskQuery().processInstanceIdIn(collect).list(); | ||
| 791 | - Workflows.forEach(wl -> { | ||
| 792 | - Task task = tasks.parallelStream().filter(t -> t.getProcessInstanceId().equals(wl.getInstanceId())) | ||
| 793 | - .findAny().orElse(null); | ||
| 794 | - if (task != null) { | ||
| 795 | - wl.setTaskName(task.getName()); | ||
| 796 | - } | ||
| 797 | - }); | ||
| 798 | - } | ||
| 799 | - return Workflows; | ||
| 800 | - } | ||
| 801 | - | ||
| 802 | - /** | ||
| 803 | - * 修改请假 | ||
| 804 | - * | ||
| 805 | - * @param Workflow | ||
| 806 | - * 请假 | ||
| 807 | - * @return 结果 | ||
| 808 | - */ | ||
| 809 | - @Override | ||
| 810 | - public int updateWorkflow(Workflow Workflow) { | ||
| 811 | - Workflow.setUpdateTime(DateUtils.getNowDate()); | ||
| 812 | - return workflowMapper.updateWorkflow(Workflow); | ||
| 813 | - } | ||
| 814 | - | ||
| 815 | - /** | ||
| 816 | - * 批量删除请假 | ||
| 817 | - * | ||
| 818 | - * @param ids | ||
| 819 | - * 需要删除的请假ID | ||
| 820 | - * @return 结果 | ||
| 821 | - */ | ||
| 822 | - @Override | ||
| 823 | - public int deleteWorkflowByIds(String[] ids) { | ||
| 824 | - return workflowMapper.deleteWorkflowByIds(ids); | ||
| 825 | - } | ||
| 826 | - | ||
| 827 | - /** | ||
| 828 | - * 删除请假信息 | ||
| 829 | - * | ||
| 830 | - * @param id | ||
| 831 | - * 请假ID | ||
| 832 | - * @return 结果 | ||
| 833 | - */ | ||
| 834 | - @Override | ||
| 835 | - public int deleteWorkflowById(String id) { | ||
| 836 | - return workflowMapper.deleteWorkflowById(id); | ||
| 837 | - } | ||
| 838 | - | ||
| 839 | - @Override | ||
| 840 | - public void deleteWorkflowByName(String name) { | ||
| 841 | - workflowMapper.deleteWorkflowByName(name); | ||
| 842 | - } | ||
| 843 | - | ||
| 844 | - @Override | ||
| 845 | - public Workflow selectWorkflowByInstanceId(String instanceId) { | ||
| 846 | - | ||
| 847 | - return workflowMapper.selectWorkflowByInstanceId(instanceId); | ||
| 848 | - } | ||
| 849 | - | ||
| 850 | -} | 1 | +package com.trash.workflow.service.impl; |
| 2 | + | ||
| 3 | +import java.text.SimpleDateFormat; | ||
| 4 | +import java.util.Date; | ||
| 5 | +import java.util.List; | ||
| 6 | +import java.util.Map; | ||
| 7 | +import java.util.stream.Collectors; | ||
| 8 | + | ||
| 9 | +import org.activiti.api.process.model.ProcessInstance; | ||
| 10 | +import org.activiti.api.process.model.builders.ProcessPayloadBuilder; | ||
| 11 | +import org.activiti.api.process.runtime.ProcessRuntime; | ||
| 12 | +import org.activiti.api.task.runtime.TaskRuntime; | ||
| 13 | +import org.activiti.engine.RuntimeService; | ||
| 14 | +import org.activiti.engine.TaskService; | ||
| 15 | +import org.activiti.engine.task.IdentityLink; | ||
| 16 | +import org.activiti.engine.task.Task; | ||
| 17 | +import org.apache.commons.collections4.map.HashedMap; | ||
| 18 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 19 | +import org.springframework.security.core.context.SecurityContextHolder; | ||
| 20 | +import org.springframework.security.core.context.SecurityContextImpl; | ||
| 21 | +import org.springframework.stereotype.Service; | ||
| 22 | +import org.springframework.transaction.annotation.Transactional; | ||
| 23 | + | ||
| 24 | +import com.alibaba.fastjson.JSONArray; | ||
| 25 | +import com.alibaba.fastjson.JSONObject; | ||
| 26 | +import com.trash.activiti.domain.ActWorkflowFormData; | ||
| 27 | +import com.trash.activiti.service.IActWorkflowFormDataService; | ||
| 28 | +import com.trash.business.domain.ConstructionCredit; | ||
| 29 | +import com.trash.business.domain.ConstructionSign; | ||
| 30 | +import com.trash.business.domain.SupervisionThreestep; | ||
| 31 | +import com.trash.business.service.IConstructionSignService; | ||
| 32 | +import com.trash.business.service.ISupervisionThreestepService; | ||
| 33 | +import com.trash.caseOffline.domain.CaseOffline; | ||
| 34 | +import com.trash.casefile.domain.ViolationCaseFile; | ||
| 35 | +import com.trash.casefile.domain.ViolationWarningInformation; | ||
| 36 | +import com.trash.common.core.domain.entity.SysDictData; | ||
| 37 | +import com.trash.common.core.domain.entity.SysUser; | ||
| 38 | +import com.trash.common.core.redis.RedisCache; | ||
| 39 | +import com.trash.common.utils.DateUtils; | ||
| 40 | +import com.trash.common.utils.RemoteServerUtils; | ||
| 41 | +import com.trash.common.utils.SecurityUtils; | ||
| 42 | +import com.trash.common.utils.StringUtils; | ||
| 43 | +import com.trash.common.utils.spring.SpringUtils; | ||
| 44 | +import com.trash.framework.web.service.SysLoginService; | ||
| 45 | +import com.trash.system.service.ISysDictTypeService; | ||
| 46 | +import com.trash.system.service.ISysUserService; | ||
| 47 | +import com.trash.workflow.domain.Workflow; | ||
| 48 | +import com.trash.workflow.mapper.WorkflowMapper; | ||
| 49 | +import com.trash.workflow.service.IWorkflowService; | ||
| 50 | + | ||
| 51 | +/** | ||
| 52 | + * 请假Service业务层处理 | ||
| 53 | + * | ||
| 54 | + * @author danny | ||
| 55 | + * @date 2020-10-28 | ||
| 56 | + */ | ||
| 57 | +@Service | ||
| 58 | +public class WorkflowServiceImpl implements IWorkflowService { | ||
| 59 | + | ||
| 60 | + @Autowired | ||
| 61 | + private WorkflowMapper workflowMapper; | ||
| 62 | + @Autowired | ||
| 63 | + private ProcessRuntime processRuntime; | ||
| 64 | + @Autowired | ||
| 65 | + private ISysUserService sysUserService; | ||
| 66 | + @Autowired | ||
| 67 | + private TaskService taskService; | ||
| 68 | + | ||
| 69 | + @Autowired | ||
| 70 | + private TaskRuntime taskRuntime; | ||
| 71 | + | ||
| 72 | + @Autowired | ||
| 73 | + IConstructionSignService signService; | ||
| 74 | + | ||
| 75 | + @Autowired | ||
| 76 | + com.trash.common.config.trashConfig trashConfig; | ||
| 77 | + | ||
| 78 | + @Autowired | ||
| 79 | + SysLoginService loginService; | ||
| 80 | + | ||
| 81 | + String siteType[] = { "处理场所", "建筑垃圾资源化处置场", "盾构土环保处置场", "盾构土应急处理场所", "回填场" }; | ||
| 82 | + | ||
| 83 | + String outArea = "株洲市,湘潭市,汨罗市,湘阴县"; | ||
| 84 | + | ||
| 85 | + String tcdOutArea = "长沙县,望城区,浏阳市,宁乡市"; // 车企人外区 | ||
| 86 | + | ||
| 87 | + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); | ||
| 88 | + | ||
| 89 | + String inArea = "芙蓉区,天心区,开福区,雨花区,望城区"; | ||
| 90 | + | ||
| 91 | + @Autowired | ||
| 92 | + IActWorkflowFormDataService awfServer; | ||
| 93 | + | ||
| 94 | + @Autowired | ||
| 95 | + RuntimeService runtimeService; | ||
| 96 | + | ||
| 97 | + @Autowired | ||
| 98 | + ISupervisionThreestepService server; | ||
| 99 | + | ||
| 100 | + @Autowired | ||
| 101 | + RedisCache redisCache; | ||
| 102 | + | ||
| 103 | + @Override | ||
| 104 | + @Transactional | ||
| 105 | + public int createWorkFlow(Map<String, Object> data) { // 第三方通用接收接口 | ||
| 106 | + | ||
| 107 | + SysUser user = SecurityUtils.getLoginUser().getUser(); | ||
| 108 | + | ||
| 109 | + String flowType = data.get("type").toString(); | ||
| 110 | + | ||
| 111 | + Map map = (Map) data.get("data"); | ||
| 112 | + | ||
| 113 | + String businessKey = flowType + ":" + map.get("id"); // 流程对应事务key | ||
| 114 | + String title = map.get("title").toString(); | ||
| 115 | + String reason = map.get("reason").toString(); | ||
| 116 | + String startTime = map.get("startTime").toString(); | ||
| 117 | + String endTime = map.get("endTime").toString(); | ||
| 118 | + String areaCode = null; | ||
| 119 | + int index = 0; | ||
| 120 | + JSONArray areas = RemoteServerUtils.getAreas(); | ||
| 121 | + if (map.get("area") != null) { | ||
| 122 | + areaCode = map.get("area").toString(); | ||
| 123 | + | ||
| 124 | + if (flowType.equals("workflow_vehicle") || flowType.equals("workflow_company") | ||
| 125 | + || flowType.equals("workflow_driver")) { | ||
| 126 | + for (Object obj : areas) { | ||
| 127 | + JSONObject jsonObject = (JSONObject) obj; | ||
| 128 | + if (areaCode.equals(jsonObject.getString("code"))) { | ||
| 129 | + if (tcdOutArea.contains(jsonObject.getString("name"))) { | ||
| 130 | + index = 1; | ||
| 131 | + } | ||
| 132 | + break; | ||
| 133 | + } | ||
| 134 | + } | ||
| 135 | + }else if (flowType.equals("workflow_earthsites")|| flowType.equals("workflow_earthsites_edit")) { | ||
| 136 | + for (Object obj : areas) { | ||
| 137 | + JSONObject jsonObject = (JSONObject) obj; | ||
| 138 | + if (areaCode.equals(jsonObject.getString("code"))) { | ||
| 139 | + if (inArea.contains(jsonObject.getString("name"))) { | ||
| 140 | + index = 2; | ||
| 141 | + } | ||
| 142 | + if (tcdOutArea.contains(jsonObject.getString("name"))||jsonObject.getString("name").contains("湘江") ) { | ||
| 143 | + index = 1; | ||
| 144 | + } | ||
| 145 | + break; | ||
| 146 | + } | ||
| 147 | + } | ||
| 148 | + } else { | ||
| 149 | + for (Object obj : areas) { | ||
| 150 | + JSONObject jsonObject = (JSONObject) obj; | ||
| 151 | + if (areaCode.equals(jsonObject.getString("code"))) { | ||
| 152 | + if (outArea.contains(jsonObject.getString("name"))) { | ||
| 153 | + index = 1; | ||
| 154 | + } | ||
| 155 | + break; | ||
| 156 | + } | ||
| 157 | + } | ||
| 158 | + } | ||
| 159 | + } | ||
| 160 | + | ||
| 161 | + ProcessInstance processInstance = null; | ||
| 162 | + ActWorkflowFormData awf = null; | ||
| 163 | + | ||
| 164 | + try { | ||
| 165 | + | ||
| 166 | + processInstance = processRuntime.start(ProcessPayloadBuilder.start().withProcessDefinitionKey(flowType) | ||
| 167 | + .withName(title).withVariable("route", index).withBusinessKey(businessKey).build()); | ||
| 168 | + | ||
| 169 | + if (areaCode != null) { | ||
| 170 | + PorcThreeStepTask(processInstance, areaCode); | ||
| 171 | + } | ||
| 172 | + | ||
| 173 | + if (flowType.equals("workflow_constructsite")) { | ||
| 174 | + | ||
| 175 | + ConstructionSign constructionSign = new ConstructionSign(); | ||
| 176 | + | ||
| 177 | + constructionSign.setObjectId(map.get("id").toString()); | ||
| 178 | + | ||
| 179 | + if (!user.getAvatar().contains("null")) { | ||
| 180 | + constructionSign.setSign1(SecurityUtils.getLoginUser().getUser().getAvatar()); | ||
| 181 | + constructionSign.setSign1Time(new Date()); | ||
| 182 | + } | ||
| 183 | + | ||
| 184 | + signService.insertConstructionSign(constructionSign); | ||
| 185 | + | ||
| 186 | + } | ||
| 187 | + | ||
| 188 | + Workflow workflow = new Workflow(); | ||
| 189 | + workflow.setId(businessKey); | ||
| 190 | + workflow.setTitle(title); | ||
| 191 | + workflow.setReason(reason); | ||
| 192 | + workflow.setStartTime(startTime); | ||
| 193 | + workflow.setEndTime(endTime); | ||
| 194 | + workflow.setType(map.get("type").toString()); | ||
| 195 | + workflow.setInstanceId(processInstance.getId()); | ||
| 196 | + workflow.setState("0"); | ||
| 197 | + workflow.setCreateTime(new Date()); | ||
| 198 | + workflow.setCreateBy(user.getUserName()); | ||
| 199 | + workflow.setCreateName(user.getUserName()); | ||
| 200 | + | ||
| 201 | + awf = insertAwf(user, workflow); | ||
| 202 | + | ||
| 203 | + return workflowMapper.insertWorkflow(workflow); | ||
| 204 | + } catch (Exception e) { | ||
| 205 | + | ||
| 206 | + if (processInstance != null) | ||
| 207 | + processRuntime.delete(ProcessPayloadBuilder.delete(processInstance)); | ||
| 208 | + | ||
| 209 | + if (awf.getId() != null) | ||
| 210 | + awfServer.deleteActWorkflowFormDataById(awf.getId()); | ||
| 211 | + | ||
| 212 | + e.printStackTrace(); | ||
| 213 | + } | ||
| 214 | + | ||
| 215 | + return 0; | ||
| 216 | + } | ||
| 217 | + | ||
| 218 | + private ActWorkflowFormData insertAwf(SysUser user, Workflow workflow) { | ||
| 219 | + | ||
| 220 | + if (user == null) { | ||
| 221 | + user = new SysUser(); | ||
| 222 | + user.setUserName("长沙市建筑垃圾智慧监管平台"); | ||
| 223 | + } | ||
| 224 | + | ||
| 225 | + ActWorkflowFormData awf; | ||
| 226 | + awf = new ActWorkflowFormData(); | ||
| 227 | + awf.setCreateBy(user.getUserName()); | ||
| 228 | + awf.setCreateName(user.getUserName()); | ||
| 229 | + awf.setCreateTime(new Date()); | ||
| 230 | + awf.setBusinessKey(workflow.getId()); | ||
| 231 | + awf.setControlId("CREATED"); | ||
| 232 | + awf.setControlName("发起人"); | ||
| 233 | + awf.setFormKey("CREATED"); | ||
| 234 | + awf.setTaskNodeName(user.getUserName() + "发起"); | ||
| 235 | + awf.setControlValue(workflow.getReason()); | ||
| 236 | + | ||
| 237 | + awfServer.insertActWorkflowFormData(awf); | ||
| 238 | + return awf; | ||
| 239 | + } | ||
| 240 | + | ||
| 241 | + @Override | ||
| 242 | + @Transactional | ||
| 243 | + public int createLeaveWorkFlow(Workflow workflow, int index) { | ||
| 244 | + ProcessInstance processInstance = null; | ||
| 245 | + | ||
| 246 | + ActWorkflowFormData awf = null; | ||
| 247 | + | ||
| 248 | + SysUser user = SecurityUtils.getLoginUser().getUser(); | ||
| 249 | + | ||
| 250 | + try { | ||
| 251 | + | ||
| 252 | + processInstance = processRuntime.start(ProcessPayloadBuilder.start() | ||
| 253 | + .withProcessDefinitionKey("workflow_leave").withName(workflow.getTitle()) | ||
| 254 | + .withBusinessKey(workflow.getId()).withVariable("route", index).build()); | ||
| 255 | + | ||
| 256 | + Task task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult(); | ||
| 257 | + | ||
| 258 | + if (task != null) { | ||
| 259 | + | ||
| 260 | + task.setDescription(SecurityUtils.getLoginUser().getUser().getRoleIds().get(0)); | ||
| 261 | + | ||
| 262 | + List<IdentityLink> list = taskService.getIdentityLinksForTask(task.getId()); | ||
| 263 | + | ||
| 264 | + if (list.size() == 1) { | ||
| 265 | + taskService.addCandidateUser(task.getId(), task.getDescription()); | ||
| 266 | + } | ||
| 267 | + | ||
| 268 | + taskService.saveTask(task); | ||
| 269 | + } | ||
| 270 | + | ||
| 271 | + awf = insertAwf(user, workflow); | ||
| 272 | + | ||
| 273 | + workflow.setInstanceId(processInstance.getId()); | ||
| 274 | + | ||
| 275 | + workflow.setCreateTime(new Date()); | ||
| 276 | + return workflowMapper.insertWorkflow(workflow); | ||
| 277 | + } catch (Exception e) { | ||
| 278 | + | ||
| 279 | + if (awf.getId() != null) | ||
| 280 | + awfServer.deleteActWorkflowFormDataById(awf.getId()); | ||
| 281 | + processRuntime.delete(ProcessPayloadBuilder.delete(processInstance)); | ||
| 282 | + | ||
| 283 | + e.printStackTrace(); | ||
| 284 | + } | ||
| 285 | + | ||
| 286 | + return 0; | ||
| 287 | + } | ||
| 288 | + | ||
| 289 | + @Override | ||
| 290 | + @Transactional | ||
| 291 | + public int createDropPointWorkFlow(Map<String, String> droppoint) { // 三查 | ||
| 292 | + ProcessInstance processInstance = null; | ||
| 293 | + ActWorkflowFormData awf = null; | ||
| 294 | + try { | ||
| 295 | + String name = "投放点审批:" + droppoint.get("name"); | ||
| 296 | + | ||
| 297 | + processInstance = processRuntime | ||
| 298 | + .start(ProcessPayloadBuilder.start().withProcessDefinitionKey("workflow_drop_point").withName(name) | ||
| 299 | + .withBusinessKey("workflow_drop_point:" + droppoint.get("id")).build()); | ||
| 300 | + | ||
| 301 | + PorcThreeStepTask(processInstance, droppoint.get("area")); | ||
| 302 | + | ||
| 303 | + Workflow workflow = new Workflow(); | ||
| 304 | + workflow.setId("workflow_drop_point:" + droppoint.get("id")); | ||
| 305 | + workflow.setTitle(name); | ||
| 306 | + workflow.setReason(droppoint.get("name") + "审批流程"); | ||
| 307 | + workflow.setStartTime(sdf.format(new Date())); | ||
| 308 | + workflow.setEndTime(sdf.format(new Date())); | ||
| 309 | + workflow.setType("投放点审批"); | ||
| 310 | + workflow.setInstanceId(processInstance.getId()); | ||
| 311 | + workflow.setState("0"); | ||
| 312 | + workflow.setCreateTime(new Date()); | ||
| 313 | + | ||
| 314 | + SysUser user = SecurityUtils.getLoginUser().getUser(); | ||
| 315 | + awf = insertAwf(user, workflow); | ||
| 316 | + | ||
| 317 | + return workflowMapper.insertWorkflow(workflow); | ||
| 318 | + } catch (Exception e) { | ||
| 319 | + e.printStackTrace(); | ||
| 320 | + if (awf.getId() != null) | ||
| 321 | + awfServer.deleteActWorkflowFormDataById(awf.getId()); | ||
| 322 | + processRuntime.delete(ProcessPayloadBuilder.delete(processInstance)); | ||
| 323 | + } | ||
| 324 | + | ||
| 325 | + return 0; | ||
| 326 | + } | ||
| 327 | + | ||
| 328 | + @Override | ||
| 329 | + @Transactional | ||
| 330 | + public int createThreeStepWorkFlow(SupervisionThreestep supervision) { // 三查 | ||
| 331 | + ProcessInstance processInstance = null; | ||
| 332 | + ActWorkflowFormData awf = null; | ||
| 333 | + try { | ||
| 334 | + String name = "报工自查:" + supervision.getName(); | ||
| 335 | + | ||
| 336 | + JSONArray areas = redisCache.getCacheObject("areas"); | ||
| 337 | + | ||
| 338 | + int route = 0; | ||
| 339 | + | ||
| 340 | + if (areas == null) { | ||
| 341 | + areas = RemoteServerUtils.getAreas(); | ||
| 342 | + redisCache.setCacheObject("areas", areas); | ||
| 343 | + } | ||
| 344 | + | ||
| 345 | + for (Object obj : areas) { | ||
| 346 | + JSONObject jsonObject = (JSONObject) obj; | ||
| 347 | + if (supervision.getPlace().equals(jsonObject.getString("code"))) { | ||
| 348 | + if (jsonObject.getString("name").contains("湘江新区")) { | ||
| 349 | + route = 1; | ||
| 350 | + } | ||
| 351 | + break; | ||
| 352 | + } | ||
| 353 | + } | ||
| 354 | + | ||
| 355 | + processInstance = processRuntime.start(ProcessPayloadBuilder.start() | ||
| 356 | + .withProcessDefinitionKey("workflow_threestep").withName(name).withVariable("route", route) | ||
| 357 | + .withBusinessKey("workflow_threestep:" + supervision.getId()).build()); | ||
| 358 | + | ||
| 359 | + PorcThreeStepTask(processInstance, supervision.getPlace()); | ||
| 360 | + | ||
| 361 | + Workflow workflow = new Workflow(); | ||
| 362 | + workflow.setId("workflow_threestep:" + supervision.getId()); | ||
| 363 | + workflow.setTitle(name); | ||
| 364 | + workflow.setReason("报工自查"); | ||
| 365 | + workflow.setStartTime(sdf.format(supervision.getSelfCheckTime())); | ||
| 366 | + workflow.setEndTime(sdf.format(supervision.getSelfCheckTime())); | ||
| 367 | + workflow.setType("报工审批"); | ||
| 368 | + workflow.setInstanceId(processInstance.getId()); | ||
| 369 | + workflow.setState("0"); | ||
| 370 | + workflow.setCreateTime(new Date()); | ||
| 371 | + | ||
| 372 | + SysUser user = SecurityUtils.getLoginUser().getUser(); | ||
| 373 | + awf = insertAwf(user, workflow); | ||
| 374 | + | ||
| 375 | + return workflowMapper.insertWorkflow(workflow); | ||
| 376 | + } catch (Exception e) { | ||
| 377 | + e.printStackTrace(); | ||
| 378 | + if (awf.getId() != null) | ||
| 379 | + awfServer.deleteActWorkflowFormDataById(awf.getId()); | ||
| 380 | + processRuntime.delete(ProcessPayloadBuilder.delete(processInstance)); | ||
| 381 | + } | ||
| 382 | + | ||
| 383 | + return 0; | ||
| 384 | + } | ||
| 385 | + | ||
| 386 | +// @Override | ||
| 387 | +// @Transactional | ||
| 388 | +// public int createCaseFileByTask(ViolationCaseFile caseFile, int index) { // 违规预警案卷 | ||
| 389 | +// | ||
| 390 | +// if (StringUtils.isEmpty(RemoteServerUtils.remote)) { | ||
| 391 | +// RemoteServerUtils.remote = trashConfig.getRemotePath(); | ||
| 392 | +// } | ||
| 393 | +// loginService.loginByRemote(trashConfig.getToken()); | ||
| 394 | +// | ||
| 395 | +// SysUser user = null; | ||
| 396 | +// | ||
| 397 | +// try { | ||
| 398 | +// user = SecurityUtils.getLoginUser().getUser(); | ||
| 399 | +// } catch (Exception e) { | ||
| 400 | +// // e.printStackTrace(); | ||
| 401 | +// } | ||
| 402 | +// | ||
| 403 | +// SecurityContextImpl securityContextImpl = new SecurityContextImpl(); | ||
| 404 | +// | ||
| 405 | +// securityContextImpl.setAuthentication(SecurityContextHolder.getContext().getAuthentication()); | ||
| 406 | +// org.activiti.engine.runtime.ProcessInstance instance = null; | ||
| 407 | +// String title = "案卷号:" + caseFile.getNumber(); | ||
| 408 | +// String flowType = "workflow_casefile"; | ||
| 409 | +// | ||
| 410 | +// if (index > 0 && caseFile.getOwningRegion().contains("湘江新区")) { | ||
| 411 | +// index += 3; | ||
| 412 | +// } | ||
| 413 | +// ActWorkflowFormData awf = null; | ||
| 414 | +// | ||
| 415 | +// try { | ||
| 416 | +// Map map = new HashedMap<>(); | ||
| 417 | +// | ||
| 418 | +// map.put("route", index); | ||
| 419 | +// instance = runtimeService.createProcessInstanceBuilder().businessKey(flowType + ":" + caseFile.getId()) | ||
| 420 | +// .name(title).variable("route", index).processDefinitionKey(flowType).variables(map).start(); | ||
| 421 | +// | ||
| 422 | +// // runtimeService.startProcessInstanceById(instance.getProcessDefinitionId(),map); | ||
| 423 | +// | ||
| 424 | +// if (index == 0) { | ||
| 425 | +// Task task = taskService.createTaskQuery().processInstanceId(instance.getId()).singleResult(); | ||
| 426 | +// | ||
| 427 | +// task.setAssignee(caseFile.getAbbreviation()); | ||
| 428 | +// | ||
| 429 | +// task.setDescription(caseFile.getAbbreviation()); | ||
| 430 | +// taskService.saveTask(task); | ||
| 431 | +// } else { | ||
| 432 | +// updateProcessKafka(instance, caseFile.getOwningRegion(), trashConfig.getToken()); | ||
| 433 | +// } | ||
| 434 | +// | ||
| 435 | +// Workflow workflow = new Workflow(); | ||
| 436 | +// workflow.setId(flowType + ":" + caseFile.getId()); | ||
| 437 | +// workflow.setTitle(title); | ||
| 438 | +// workflow.setReason("平台案卷"); | ||
| 439 | +// workflow.setStartTime(sdf.format(caseFile.getCreateTime())); | ||
| 440 | +// workflow.setEndTime(sdf.format(caseFile.getCreateTime())); | ||
| 441 | +// workflow.setType("违规案卷处置流程"); | ||
| 442 | +// workflow.setInstanceId(instance.getId()); | ||
| 443 | +// workflow.setState("0"); | ||
| 444 | +// workflow.setCreateTime(new Date()); | ||
| 445 | +// | ||
| 446 | +// awf = insertAwf(user, workflow); | ||
| 447 | +// | ||
| 448 | +// return workflowMapper.insertWorkflow(workflow); | ||
| 449 | +// } catch (Exception e) { | ||
| 450 | +// if (awf.getId() != null) | ||
| 451 | +// awfServer.deleteActWorkflowFormDataById(awf.getId()); | ||
| 452 | +// runtimeService.deleteProcessInstance(instance.getId(), "创建失败"); | ||
| 453 | +// throw new RuntimeException(e); | ||
| 454 | +// } | ||
| 455 | +// | ||
| 456 | +// } | ||
| 457 | + | ||
| 458 | + @Override | ||
| 459 | + @Transactional | ||
| 460 | + public int createCaseFile(ViolationCaseFile caseFile, int index) { // 三查 | ||
| 461 | + ProcessInstance processInstance = null; | ||
| 462 | + ActWorkflowFormData awf = null; | ||
| 463 | + String title = "案卷号:" + caseFile.getNumber(); | ||
| 464 | + String flowType = "workflow_casefile"; | ||
| 465 | + try { | ||
| 466 | + List<SysDictData> caseType = SpringUtils.getBean(ISysDictTypeService.class) | ||
| 467 | + .selectDictDataByType("vio_casefile"); | ||
| 468 | + | ||
| 469 | + for (SysDictData d : caseType) { | ||
| 470 | + if (caseFile.getViolationType().equals(d.getDictValue())) { | ||
| 471 | + if (d.getRemark() != null) { | ||
| 472 | + index = 1; | ||
| 473 | + } | ||
| 474 | + break; | ||
| 475 | + } | ||
| 476 | + } | ||
| 477 | + | ||
| 478 | + if(index == 0){ | ||
| 479 | + if (tcdOutArea.indexOf(caseFile.getOwningRegion()) > -1) { | ||
| 480 | + index = 2; | ||
| 481 | + } | ||
| 482 | + | ||
| 483 | + if ("湘江新区".equals(caseFile.getOwningRegion())) { | ||
| 484 | + index = 3; | ||
| 485 | + } | ||
| 486 | + } | ||
| 487 | + | ||
| 488 | + | ||
| 489 | + | ||
| 490 | + | ||
| 491 | + processInstance = processRuntime | ||
| 492 | + .start(ProcessPayloadBuilder.start().withProcessDefinitionKey(flowType).withName(title) | ||
| 493 | + .withBusinessKey(flowType + ":" + caseFile.getId()).withVariable("route", index).build()); | ||
| 494 | + | ||
| 495 | + | ||
| 496 | + updateProcess(processInstance, caseFile.getOwningRegion()); | ||
| 497 | + | ||
| 498 | + | ||
| 499 | + Workflow workflow = new Workflow(); | ||
| 500 | + workflow.setId(flowType + ":" + caseFile.getId()); | ||
| 501 | + workflow.setTitle(title); | ||
| 502 | + workflow.setReason("平台案卷"); | ||
| 503 | + workflow.setStartTime(sdf.format(caseFile.getCreateTime())); | ||
| 504 | + workflow.setEndTime(sdf.format(caseFile.getCreateTime())); | ||
| 505 | + workflow.setType("违规案卷处置流程"); | ||
| 506 | + workflow.setInstanceId(processInstance.getId()); | ||
| 507 | + workflow.setState("0"); | ||
| 508 | + workflow.setCreateTime(new Date()); | ||
| 509 | + | ||
| 510 | + SysUser user = SecurityUtils.getLoginUser().getUser(); | ||
| 511 | + awf = insertAwf(user, workflow); | ||
| 512 | + return workflowMapper.insertWorkflow(workflow); | ||
| 513 | + } catch (Exception e) { | ||
| 514 | + e.printStackTrace(); | ||
| 515 | + if (awf.getId() != null) | ||
| 516 | + awfServer.deleteActWorkflowFormDataById(awf.getId()); | ||
| 517 | + processRuntime.delete(ProcessPayloadBuilder.delete(processInstance)); | ||
| 518 | + throw new RuntimeException(e); | ||
| 519 | + } | ||
| 520 | + } | ||
| 521 | + | ||
| 522 | + @Override | ||
| 523 | + @Transactional | ||
| 524 | + public int createCaseFile1(ViolationWarningInformation caseFile, int index, int isAuto) { // 违规预警案卷 | ||
| 525 | + if (isAuto == 1) { | ||
| 526 | + if (StringUtils.isEmpty(RemoteServerUtils.remote)) { | ||
| 527 | + RemoteServerUtils.remote = trashConfig.getRemotePath(); | ||
| 528 | + } | ||
| 529 | + loginService.loginByRemote(trashConfig.getToken()); | ||
| 530 | + } | ||
| 531 | + | ||
| 532 | + SysUser user = null; | ||
| 533 | + | ||
| 534 | + try { | ||
| 535 | + user = SecurityUtils.getLoginUser().getUser(); | ||
| 536 | + } catch (Exception e) { | ||
| 537 | + // e.printStackTrace(); | ||
| 538 | + } | ||
| 539 | + | ||
| 540 | + SecurityContextImpl securityContextImpl = new SecurityContextImpl(); | ||
| 541 | + | ||
| 542 | + securityContextImpl.setAuthentication(SecurityContextHolder.getContext().getAuthentication()); | ||
| 543 | + org.activiti.engine.runtime.ProcessInstance instance = null; | ||
| 544 | + String title = "案卷号:" + caseFile.getNumber(); | ||
| 545 | + String flowType = "violation_warning"; | ||
| 546 | + | ||
| 547 | + if (index > 0 && caseFile.getOwningRegion().contains("湘江新区")) { | ||
| 548 | + index += 3; | ||
| 549 | + } | ||
| 550 | + ActWorkflowFormData awf = null; | ||
| 551 | + | ||
| 552 | + try { | ||
| 553 | + Map map = new HashedMap<>(); | ||
| 554 | + | ||
| 555 | + map.put("route", index); | ||
| 556 | + instance = runtimeService.createProcessInstanceBuilder().businessKey(flowType + ":" + caseFile.getId()) | ||
| 557 | + .name(title).variable("route", index).processDefinitionKey(flowType).variables(map).start(); | ||
| 558 | + | ||
| 559 | + // runtimeService.startProcessInstanceById(instance.getProcessDefinitionId(),map); | ||
| 560 | + | ||
| 561 | + if (index == 0) { | ||
| 562 | + Task task = taskService.createTaskQuery().processInstanceId(instance.getId()).singleResult(); | ||
| 563 | + | ||
| 564 | + task.setAssignee(caseFile.getAbbreviation()); | ||
| 565 | + task.setDescription(caseFile.getAbbreviation()); | ||
| 566 | + | ||
| 567 | + taskService.saveTask(task); | ||
| 568 | + } else { | ||
| 569 | + updateProcessKafka(instance, caseFile.getOwningRegion(), trashConfig.getToken()); | ||
| 570 | + } | ||
| 571 | + | ||
| 572 | + Workflow workflow = new Workflow(); | ||
| 573 | + workflow.setId(flowType + ":" + caseFile.getId()); | ||
| 574 | + workflow.setTitle(title); | ||
| 575 | + workflow.setReason("违规预警信息"); | ||
| 576 | + workflow.setStartTime(sdf.format(caseFile.getCreateTime())); | ||
| 577 | + workflow.setEndTime(sdf.format(caseFile.getCreateTime())); | ||
| 578 | + workflow.setType("平台预警信息"); | ||
| 579 | + workflow.setInstanceId(instance.getId()); | ||
| 580 | + workflow.setState("0"); | ||
| 581 | + workflow.setCreateTime(new Date()); | ||
| 582 | + | ||
| 583 | + awf = insertAwf(user, workflow); | ||
| 584 | + | ||
| 585 | + return workflowMapper.insertWorkflow(workflow); | ||
| 586 | + } catch (Exception e) { | ||
| 587 | + if (awf.getId() != null) | ||
| 588 | + awfServer.deleteActWorkflowFormDataById(awf.getId()); | ||
| 589 | + runtimeService.deleteProcessInstance(instance.getId(), "创建失败"); | ||
| 590 | + throw new RuntimeException(e); | ||
| 591 | + } | ||
| 592 | + | ||
| 593 | + } | ||
| 594 | + | ||
| 595 | + @Override | ||
| 596 | + @Transactional | ||
| 597 | + public int createCaseOffline(CaseOffline caseOffline) { // 三查 | ||
| 598 | + ProcessInstance processInstance = null; | ||
| 599 | + ActWorkflowFormData awf = null; | ||
| 600 | + try { | ||
| 601 | + | ||
| 602 | + String title = "案卷号:" + caseOffline.getNumber(); | ||
| 603 | + int index = 0; | ||
| 604 | + | ||
| 605 | + List<SysDictData> caseType = SpringUtils.getBean(ISysDictTypeService.class) | ||
| 606 | + .selectDictDataByType("case_offline_type"); | ||
| 607 | + | ||
| 608 | + for (SysDictData d : caseType) { | ||
| 609 | + if (caseOffline.getType().equals(d.getDictValue())) { | ||
| 610 | + if (d.getRemark() != null) { | ||
| 611 | + index = 1; | ||
| 612 | + } | ||
| 613 | + break; | ||
| 614 | + } | ||
| 615 | + } | ||
| 616 | + | ||
| 617 | + if(index == 0){ | ||
| 618 | + JSONArray array = RemoteServerUtils.getAreas(); | ||
| 619 | + String placeName = ""; | ||
| 620 | + String placeCode = caseOffline.getPlace(); | ||
| 621 | + | ||
| 622 | + for (Object obj : array) { | ||
| 623 | + if (((JSONObject) (obj)).getString("code").equals(placeCode)) { | ||
| 624 | + placeName = ((JSONObject) (obj)).getString("name"); | ||
| 625 | + if ("湘江新区".equals(placeName)) { | ||
| 626 | + index = 3; | ||
| 627 | + } | ||
| 628 | + | ||
| 629 | + break; | ||
| 630 | + } | ||
| 631 | + } | ||
| 632 | + | ||
| 633 | + if (tcdOutArea.indexOf(placeName) > -1) { | ||
| 634 | + index = 2; | ||
| 635 | + } | ||
| 636 | + } | ||
| 637 | + | ||
| 638 | + | ||
| 639 | + processInstance = processRuntime | ||
| 640 | + .start(ProcessPayloadBuilder.start().withProcessDefinitionKey("workflow_caseoffline") | ||
| 641 | + .withName(title).withBusinessKey("workflow_caseoffline:" + caseOffline.getId()) | ||
| 642 | + .withVariable("route", index).build()); | ||
| 643 | + | ||
| 644 | + PorcThreeStepTask(processInstance, caseOffline.getPlace()); | ||
| 645 | + | ||
| 646 | + Workflow workflow = new Workflow(); | ||
| 647 | + workflow.setId("workflow_caseoffline:" + caseOffline.getId()); | ||
| 648 | + workflow.setTitle(title); | ||
| 649 | + workflow.setReason("案卷线下交办"); | ||
| 650 | + workflow.setStartTime(sdf.format(caseOffline.getCreateTime())); | ||
| 651 | + workflow.setEndTime(sdf.format(caseOffline.getCreateTime())); | ||
| 652 | + workflow.setType("交办案卷"); | ||
| 653 | + workflow.setInstanceId(processInstance.getId()); | ||
| 654 | + workflow.setState("0"); | ||
| 655 | + workflow.setCreateTime(new Date()); | ||
| 656 | + | ||
| 657 | + SysUser user = null; | ||
| 658 | + | ||
| 659 | + try { | ||
| 660 | + user = SecurityUtils.getLoginUser().getUser(); | ||
| 661 | + } catch (Exception e) { | ||
| 662 | + // e.printStackTrace(); | ||
| 663 | + } | ||
| 664 | + | ||
| 665 | + awf = insertAwf(user, workflow); | ||
| 666 | + | ||
| 667 | + return workflowMapper.insertWorkflow(workflow); | ||
| 668 | + } catch (Exception e) { | ||
| 669 | + if (awf.getId() != null) | ||
| 670 | + awfServer.deleteActWorkflowFormDataById(awf.getId()); | ||
| 671 | + e.printStackTrace(); | ||
| 672 | + processRuntime.delete(ProcessPayloadBuilder.delete(processInstance)); | ||
| 673 | + } | ||
| 674 | + | ||
| 675 | + return 0; | ||
| 676 | + } | ||
| 677 | + | ||
| 678 | + private void updateProcess(ProcessInstance processInstance, String owningRegion) { | ||
| 679 | + | ||
| 680 | + JSONArray array = RemoteServerUtils.getAreas(); | ||
| 681 | + | ||
| 682 | + String placeCode = null; | ||
| 683 | + | ||
| 684 | + for (Object obj : array) { | ||
| 685 | + if (((JSONObject) (obj)).getString("name").equals(owningRegion)) { | ||
| 686 | + | ||
| 687 | + placeCode = ((JSONObject) (obj)).getString("code"); | ||
| 688 | + | ||
| 689 | + break; | ||
| 690 | + } | ||
| 691 | + } | ||
| 692 | + | ||
| 693 | + if (placeCode != null) { | ||
| 694 | + PorcThreeStepTask(processInstance, placeCode); | ||
| 695 | + } | ||
| 696 | + | ||
| 697 | + } | ||
| 698 | + | ||
| 699 | + public void PorcThreeStepTask(ProcessInstance processInstance, String areaCode) { | ||
| 700 | + Map map = new HashedMap<>(); | ||
| 701 | + | ||
| 702 | + map.put("type", "CSUserDepartmentType"); | ||
| 703 | + | ||
| 704 | + Task task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult(); | ||
| 705 | + | ||
| 706 | + List<IdentityLink> list = taskService.getIdentityLinksForTask(task.getId()); | ||
| 707 | + | ||
| 708 | + if (list.size() == 1) { | ||
| 709 | + taskService.addCandidateUser(task.getId(), areaCode); | ||
| 710 | + } | ||
| 711 | + | ||
| 712 | + task.setDescription(areaCode); | ||
| 713 | + | ||
| 714 | + taskService.saveTask(task); | ||
| 715 | + } | ||
| 716 | + | ||
| 717 | + void updateProcessKafka(org.activiti.engine.runtime.ProcessInstance processInstance, String placeName, | ||
| 718 | + String token) { | ||
| 719 | + JSONArray array = RemoteServerUtils.getAreas(trashConfig.getToken()); | ||
| 720 | + | ||
| 721 | + String placeCode = null; | ||
| 722 | + | ||
| 723 | + for (Object obj : array) { | ||
| 724 | + if (((JSONObject) (obj)).getString("name").equals(placeName)) { | ||
| 725 | + | ||
| 726 | + placeCode = ((JSONObject) (obj)).getString("code"); | ||
| 727 | + | ||
| 728 | + break; | ||
| 729 | + } | ||
| 730 | + } | ||
| 731 | + | ||
| 732 | + if (placeCode != null) { | ||
| 733 | + Task task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult(); | ||
| 734 | + | ||
| 735 | + List<IdentityLink> list = taskService.getIdentityLinksForTask(task.getId()); | ||
| 736 | + | ||
| 737 | + for (IdentityLink identityLink : list) { | ||
| 738 | + // if(identityLink.getGroupId() != null) | ||
| 739 | + // taskService.deleteGroupIdentityLink(task.getId(), | ||
| 740 | + // identityLink.getGroupId(), identityLink.getType()); | ||
| 741 | + if (identityLink.getUserId() != null) | ||
| 742 | + taskService.deleteUserIdentityLink(task.getId(), identityLink.getUserId(), identityLink.getType()); | ||
| 743 | + } | ||
| 744 | + | ||
| 745 | + taskService.addCandidateUser(task.getId(), placeCode); | ||
| 746 | + | ||
| 747 | + task.setDescription(placeCode); | ||
| 748 | + | ||
| 749 | + taskService.saveTask(task); | ||
| 750 | + } | ||
| 751 | + } | ||
| 752 | + | ||
| 753 | + /** | ||
| 754 | + * 查询请假 | ||
| 755 | + * | ||
| 756 | + * @param id | ||
| 757 | + * 请假ID | ||
| 758 | + * @return 请假 | ||
| 759 | + */ | ||
| 760 | + @Override | ||
| 761 | + public Workflow selectWorkflowById(String id) { | ||
| 762 | + return workflowMapper.selectWorkflowById(id); | ||
| 763 | + } | ||
| 764 | + | ||
| 765 | + /** | ||
| 766 | + * 查询请假列表 | ||
| 767 | + * | ||
| 768 | + * @param Workflow | ||
| 769 | + * 请假 | ||
| 770 | + * @return 请假 | ||
| 771 | + */ | ||
| 772 | + @Override | ||
| 773 | + public List<Workflow> selectWorkflowList(Workflow Workflow) { | ||
| 774 | + return workflowMapper.selectWorkflowListByWorkflowAndDeptId(Workflow, | ||
| 775 | + SecurityUtils.getLoginUser().getUser().getDeptId()); | ||
| 776 | + } | ||
| 777 | + | ||
| 778 | + /** | ||
| 779 | + * 查询请假列表带任务状态 | ||
| 780 | + * | ||
| 781 | + * @param Workflow | ||
| 782 | + * 请假 | ||
| 783 | + * @return 请假 | ||
| 784 | + */ | ||
| 785 | + @Override | ||
| 786 | + public List<Workflow> selectWorkflowAndTaskNameList(Workflow Workflow) { | ||
| 787 | + List<Workflow> Workflows = workflowMapper.selectWorkflowList(Workflow); | ||
| 788 | + List<String> collect = Workflows.parallelStream().map(wl -> wl.getInstanceId()).collect(Collectors.toList()); | ||
| 789 | + if (collect != null && !collect.isEmpty()) { | ||
| 790 | + List<Task> tasks = taskService.createTaskQuery().processInstanceIdIn(collect).list(); | ||
| 791 | + Workflows.forEach(wl -> { | ||
| 792 | + Task task = tasks.parallelStream().filter(t -> t.getProcessInstanceId().equals(wl.getInstanceId())) | ||
| 793 | + .findAny().orElse(null); | ||
| 794 | + if (task != null) { | ||
| 795 | + wl.setTaskName(task.getName()); | ||
| 796 | + } | ||
| 797 | + }); | ||
| 798 | + } | ||
| 799 | + return Workflows; | ||
| 800 | + } | ||
| 801 | + | ||
| 802 | + /** | ||
| 803 | + * 修改请假 | ||
| 804 | + * | ||
| 805 | + * @param Workflow | ||
| 806 | + * 请假 | ||
| 807 | + * @return 结果 | ||
| 808 | + */ | ||
| 809 | + @Override | ||
| 810 | + public int updateWorkflow(Workflow Workflow) { | ||
| 811 | + Workflow.setUpdateTime(DateUtils.getNowDate()); | ||
| 812 | + return workflowMapper.updateWorkflow(Workflow); | ||
| 813 | + } | ||
| 814 | + | ||
| 815 | + /** | ||
| 816 | + * 批量删除请假 | ||
| 817 | + * | ||
| 818 | + * @param ids | ||
| 819 | + * 需要删除的请假ID | ||
| 820 | + * @return 结果 | ||
| 821 | + */ | ||
| 822 | + @Override | ||
| 823 | + public int deleteWorkflowByIds(String[] ids) { | ||
| 824 | + return workflowMapper.deleteWorkflowByIds(ids); | ||
| 825 | + } | ||
| 826 | + | ||
| 827 | + /** | ||
| 828 | + * 删除请假信息 | ||
| 829 | + * | ||
| 830 | + * @param id | ||
| 831 | + * 请假ID | ||
| 832 | + * @return 结果 | ||
| 833 | + */ | ||
| 834 | + @Override | ||
| 835 | + public int deleteWorkflowById(String id) { | ||
| 836 | + return workflowMapper.deleteWorkflowById(id); | ||
| 837 | + } | ||
| 838 | + | ||
| 839 | + @Override | ||
| 840 | + public void deleteWorkflowByName(String name) { | ||
| 841 | + workflowMapper.deleteWorkflowByName(name); | ||
| 842 | + } | ||
| 843 | + | ||
| 844 | + @Override | ||
| 845 | + public Workflow selectWorkflowByInstanceId(String instanceId) { | ||
| 846 | + | ||
| 847 | + return workflowMapper.selectWorkflowByInstanceId(instanceId); | ||
| 848 | + } | ||
| 849 | + | ||
| 850 | +} |