|
|
|
@ -2,8 +2,13 @@ package com.hnac.hzims.operational.access.service.impl;
|
|
|
|
|
|
|
|
|
|
import com.alibaba.fastjson.JSON; |
|
|
|
|
import com.alibaba.fastjson.JSONObject; |
|
|
|
|
import com.alibaba.fastjson.TypeReference; |
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|
|
|
|
import com.hnac.hzims.message.MessageConstants; |
|
|
|
|
import com.hnac.hzims.message.dto.BusinessMessageDTO; |
|
|
|
|
import com.hnac.hzims.message.fegin.IMessageClient; |
|
|
|
|
import com.hnac.hzims.middle.process.to.ProcessWorkFlowResponse; |
|
|
|
|
import com.hnac.hzims.operational.access.dto.AccessPlanV4DTO; |
|
|
|
|
import com.hnac.hzims.operational.access.dto.AccessTaskV4DTO; |
|
|
|
|
import com.hnac.hzims.operational.access.dto.OperAccessTaskDetailDTO; |
|
|
|
|
import com.hnac.hzims.operational.access.entity.OperAccessMaterialEntity; |
|
|
|
@ -24,15 +29,15 @@ import org.springblade.flow.core.entity.BladeFlow;
|
|
|
|
|
import org.springblade.flow.core.feign.IFlowClient; |
|
|
|
|
import org.springblade.flow.core.utils.FlowUtil; |
|
|
|
|
import org.springblade.flow.core.utils.TaskUtil; |
|
|
|
|
import org.springblade.system.feign.ISysClient; |
|
|
|
|
import org.springblade.system.user.entity.User; |
|
|
|
|
import org.springblade.system.user.feign.IUserClient; |
|
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
|
import org.springframework.util.CollectionUtils; |
|
|
|
|
|
|
|
|
|
import java.text.DecimalFormat; |
|
|
|
|
import java.util.List; |
|
|
|
|
import java.util.Map; |
|
|
|
|
import java.util.Objects; |
|
|
|
|
import java.util.Set; |
|
|
|
|
import java.util.*; |
|
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -49,8 +54,14 @@ public class AccessTaskV4ServiceImpl implements AccessTaskV4Service {
|
|
|
|
|
|
|
|
|
|
private final IOperAccessTaskDetailService detailService; |
|
|
|
|
|
|
|
|
|
private final ISysClient sysClient; |
|
|
|
|
|
|
|
|
|
private final IFlowClient flowClient; |
|
|
|
|
|
|
|
|
|
private final IUserClient userClient; |
|
|
|
|
|
|
|
|
|
private final IMessageClient messageClient; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 开启检修任务流程 |
|
|
|
|
* @param entity |
|
|
|
@ -58,7 +69,7 @@ public class AccessTaskV4ServiceImpl implements AccessTaskV4Service {
|
|
|
|
|
*/ |
|
|
|
|
@Override |
|
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
|
public boolean startProcessV4(AccessTaskV4DTO entity) { |
|
|
|
|
public void startProcessV4(AccessTaskV4DTO entity) { |
|
|
|
|
// 步骤1.保存检修任务
|
|
|
|
|
this.save(entity); |
|
|
|
|
|
|
|
|
@ -70,7 +81,6 @@ public class AccessTaskV4ServiceImpl implements AccessTaskV4Service {
|
|
|
|
|
|
|
|
|
|
// 步骤4.开启检修任务流程
|
|
|
|
|
this.startProcess(entity); |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -78,8 +88,8 @@ public class AccessTaskV4ServiceImpl implements AccessTaskV4Service {
|
|
|
|
|
* @param entity |
|
|
|
|
*/ |
|
|
|
|
private void startProcess(AccessTaskV4DTO entity) { |
|
|
|
|
Map<String, Object> variables = JSONObject.parseObject(JSONObject.toJSONString(entity), Map.class); |
|
|
|
|
variables.put("handler",TaskUtil.getTaskUser(entity.getHandler().toString())); |
|
|
|
|
Map<String, Object> variables = JSONObject.parseObject(JSONObject.toJSONStringWithDateFormat(entity,DateUtil.PATTERN_DATETIME), Map.class); |
|
|
|
|
variables.put("solve",TaskUtil.getTaskUser(entity.getHandler().toString())); |
|
|
|
|
R<BladeFlow> result = flowClient.startProcessInstanceContainNameByKey("overhaul_task", FlowUtil.getBusinessKey("access_task_v4", String.valueOf(entity.getId())), entity.getName(),variables); |
|
|
|
|
// 更新任务流程Id
|
|
|
|
|
if (result.isSuccess()) { |
|
|
|
@ -110,8 +120,8 @@ public class AccessTaskV4ServiceImpl implements AccessTaskV4Service {
|
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
materialService.saveOrUpdateBatch(entity.getAccessMaterials().stream().peek(material -> { |
|
|
|
|
material.setPlanId(null); |
|
|
|
|
material.setId(null); |
|
|
|
|
material.setPlanId(entity.getPlanId()); |
|
|
|
|
material.setTaskId(entity.getId()); |
|
|
|
|
}).collect(Collectors.toList())); |
|
|
|
|
} |
|
|
|
@ -154,7 +164,62 @@ public class AccessTaskV4ServiceImpl implements AccessTaskV4Service {
|
|
|
|
|
*/ |
|
|
|
|
@Override |
|
|
|
|
public boolean listener(ProcessWorkFlowResponse processWorkFlowResponse) { |
|
|
|
|
// 对象转换
|
|
|
|
|
Map<String, Object> variables = (Map<String, Object>) processWorkFlowResponse.getVariables(); |
|
|
|
|
AccessTaskV4DTO entity = JSONObject.parseObject(JSONObject.toJSONString(variables), new TypeReference<AccessTaskV4DTO>(){}); |
|
|
|
|
// 当前流程名称
|
|
|
|
|
entity.setTaskName(processWorkFlowResponse.getTaskName()); |
|
|
|
|
// 流程阶段执行人员名称
|
|
|
|
|
entity.setNextStepOperator(processWorkFlowResponse.getNextStepOperator()); |
|
|
|
|
if(ObjectUtil.isNotEmpty(variables.get("examine")) && (Boolean) variables.get("examine")){ |
|
|
|
|
entity.setTaskName("流程结束"); |
|
|
|
|
entity.setNextStepOperator("流程结束,无需人员处理"); |
|
|
|
|
// 更新任务数据
|
|
|
|
|
this.taskService.updateById(entity); |
|
|
|
|
}else if(ObjectUtil.isEmpty(variables.get("examine")) && !(Boolean) variables.get("examine")){ |
|
|
|
|
String content = "您有一条检修任务待处理!检修任务名称:".concat(entity.getName()) |
|
|
|
|
.concat(",当前环节:") |
|
|
|
|
.concat(processWorkFlowResponse.getTaskName()); |
|
|
|
|
this.sendMessage(entity,processWorkFlowResponse.getUserId(),content); |
|
|
|
|
return this.taskService.updateById(entity); |
|
|
|
|
} |
|
|
|
|
// 保存检修材料
|
|
|
|
|
this.saveMaterial(entity); |
|
|
|
|
// 保存检修详情
|
|
|
|
|
this.saveDetails(entity); |
|
|
|
|
// 发送消息
|
|
|
|
|
String content = "您有一条检修任务待审批!检修任务名称:".concat(entity.getName()) |
|
|
|
|
.concat(",当前环节:") |
|
|
|
|
.concat(processWorkFlowResponse.getTaskName()); |
|
|
|
|
this.sendMessage(entity,processWorkFlowResponse.getUserId(),content); |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return false; |
|
|
|
|
/** |
|
|
|
|
* 推送业务流程消息 |
|
|
|
|
* @param entity |
|
|
|
|
* @param userId |
|
|
|
|
* @param content |
|
|
|
|
*/ |
|
|
|
|
private void sendMessage(AccessTaskV4DTO entity, String userId, String content) { |
|
|
|
|
BusinessMessageDTO message = new BusinessMessageDTO(); |
|
|
|
|
// 计划Id
|
|
|
|
|
message.setTaskId(entity.getId()); |
|
|
|
|
message.setBusinessClassify(MessageConstants.BusinessClassifyEnum.BUSINESS.getKey()); |
|
|
|
|
message.setBusinessKey(MessageConstants.BusinessClassifyEnum.OVERHAUL_TASK.getKey()); |
|
|
|
|
// 主题
|
|
|
|
|
message.setSubject(MessageConstants.BusinessClassifyEnum.OVERHAUL_TASK.getDescription()); |
|
|
|
|
message.setDeptId(entity.getCreateDept()); |
|
|
|
|
R<String> result = sysClient.getDeptName(entity.getCreateDept()); |
|
|
|
|
if (result.isSuccess()) { |
|
|
|
|
message.setDeptName(result.getData()); |
|
|
|
|
} |
|
|
|
|
// 内容
|
|
|
|
|
message.setContent(content); |
|
|
|
|
message.setTenantId("200000"); |
|
|
|
|
User admin = userClient.userByAccount("200000", "admin").getData(); |
|
|
|
|
message.setCreateUser(admin.getId()); |
|
|
|
|
message.setUserIds(userId); |
|
|
|
|
messageClient.sendAppAndWsMsgByUsers(message); |
|
|
|
|
} |
|
|
|
|
} |