Commit 9a9585d9 authored by LiuLin's avatar LiuLin

fix(JG):设备移交代码修改

parent 9dcc050c
package com.yeejoin.amos.boot.module.jg.api.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
......@@ -9,6 +12,9 @@ import java.util.Date;
* @author Administrator
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class TaskModelDto {
/**
* 工作流创建时间
......
......@@ -150,4 +150,7 @@ public class JgEquipTransfer extends BaseEntity {
*/
@TableField(value = "next_task_id")
private String nextTaskId;
@TableField(value = "create_user_company_name")
private String createUserCompanyName;
}
package com.yeejoin.amos.boot.module.jg.biz.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.map.MapBuilder;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.biz.common.utils.RedisKey;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
import com.yeejoin.amos.boot.module.jg.api.dto.*;
import com.yeejoin.amos.boot.module.jg.api.entity.*;
import com.yeejoin.amos.boot.module.jg.api.enums.BusinessTypeEnum;
import com.yeejoin.amos.boot.module.jg.api.mapper.JgEquipTransferEqMapper;
import com.yeejoin.amos.boot.module.jg.api.mapper.JgEquipTransferMapper;
import com.yeejoin.amos.boot.module.jg.api.service.IJgEquipTransferService;
import com.yeejoin.amos.boot.module.jg.api.dto.JgEquipTransferDto;
import com.yeejoin.amos.boot.module.jg.biz.feign.TzsServiceFeignClient;
import com.yeejoin.amos.boot.module.ymt.api.common.BaseException;
import com.yeejoin.amos.boot.module.ymt.api.enums.ApplicationFormTypeEnum;
import com.yeejoin.amos.boot.module.ymt.api.enums.FlowStatusEnum;
import com.yeejoin.amos.boot.module.ymt.api.mapper.OtherInfoMapper;
import com.yeejoin.amos.boot.module.ymt.api.mapper.RegistrationInfoMapper;
import com.yeejoin.amos.component.feign.model.FeignClientResult;
import com.yeejoin.amos.feign.workflow.Workflow;
import com.yeejoin.amos.feign.workflow.model.ActWorkflowBatchDTO;
import com.yeejoin.amos.feign.workflow.model.ActWorkflowStartDTO;
import com.yeejoin.amos.feign.workflow.model.AjaxResult;
import com.yeejoin.amos.feign.workflow.model.TaskResultDTO;
import com.yeejoin.amos.feign.systemctl.model.TaskV2Model;
import com.yeejoin.amos.feign.workflow.model.*;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
......@@ -41,209 +38,199 @@ import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
/**
* 设备移交服务实现类
*
* @author system_generator
* @author LiuLin
* @date 2023-12-20
*/
@Slf4j
@Service
public class JgEquipTransferServiceImpl extends BaseService<JgEquipTransferDto, JgEquipTransfer, JgEquipTransferMapper> implements IJgEquipTransferService {
private static final String EQUIP_TRANSFER_PROCESS_KEY = "equipmentHandover";
private static final String SUBMIT_TYPE_FLOW = "1";
@Autowired
JgEquipTransferEqMapper jgEquipTransferEqMapper;
@Autowired
OtherInfoMapper tzsJgOtherInfoMapper;
@Autowired
RegistrationInfoMapper tzsJgRegistrationInfoMapper;
@Autowired
RedisUtils redisUtils;
@Autowired
TzsServiceFeignClient tzsServiceFeignClient;
@Autowired
CmWorkflowServiceImpl workflowService;
@Autowired
CommonServiceImpl commonService;
@Autowired
CmWorkflowServiceImpl cmWorkflowService;
@Transactional(rollbackFor = {Exception.class, BaseException.class})
public void saveTransfer(String submitType, JSONObject jsonObjectMap, ReginParams reginParams) {
String[] taskName = new String[]{"流程结束"};
JgEquipTransferDto model = BeanUtil.toBeanIgnoreError(jsonObjectMap.get("model"), JgEquipTransferDto.class);
JgEquipTransferDto model = JSON.parseObject(JSONObject.toJSONString(jsonObjectMap), JgEquipTransferDto.class);
// 字段转换
convertField(model);
// 获取告知设备列表
List<Map<String, Object>> deviceList = model.getDeviceList();
if (CollectionUtils.isEmpty(deviceList)) {
return;
}
ResponseModel<List<String>> listResponseModel = tzsServiceFeignClient.applicationFormCode(ApplicationFormTypeEnum.SBYJ.getCode(), deviceList.size());
if (!org.springframework.util.ObjectUtils.isEmpty(listResponseModel) && listResponseModel.getStatus() != HttpStatus.OK.value()) {
log.error("告知单获取失败: {}", listResponseModel.getMessage());
throw new BadRequest("告知单生成失败!");
}
handleResponseModel(listResponseModel, "告知单获取失败: ");
List<String> applyNoList = listResponseModel.getResult();
if (CollectionUtils.isEmpty(applyNoList)) {
log.error("告知单返回为空");
throw new BadRequest("告知单生成失败!");
}
handleApplyNoList(applyNoList);
List<WorkflowResultDto> workflowResultList = workFlowInfo(submitType, deviceList);
ArrayList<String> roleListFirst = new ArrayList<>();
ArrayList<String> roleListSecond = new ArrayList<>();
ArrayList<String> instanceIdList = new ArrayList<>();
List<JgEquipTransfer> list = new ArrayList<>();
List<JgEquipTransferEq> equipTransferEqList = new ArrayList<>();
if (SUBMIT_TYPE_FLOW.equals(submitType)) {
ActWorkflowBatchDTO actWorkflowBatchDTO = new ActWorkflowBatchDTO();
List<ActWorkflowStartDTO> list = new ArrayList<>();
for (int i = 0; i < deviceList.size(); i++
) {
ActWorkflowStartDTO dto = new ActWorkflowStartDTO();
dto.setProcessDefinitionKey(EQUIP_TRANSFER_PROCESS_KEY);
dto.setBusinessKey(String.valueOf(i));
IntStream.range(0, deviceList.size()).forEach(i -> {
Map<String, Object> obj = deviceList.get(i);
String applyNo = applyNoList.get(i);
JgEquipTransferEq jgEquipTransferEq = buildJgEquipTransferEq(obj, applyNo);
JgEquipTransfer dto = buildJgEquipTransfer(model, applyNo, reginParams, submitType, workflowResultList, i);
dto.setCreateUserName(reginParams.getUserModel().getRealName());
dto.setCreateUserId(reginParams.getUserModel().getUserId());
dto.setCreateUserCompanyName(reginParams.getCompany().getCompanyName());
list.add(dto);
}
actWorkflowBatchDTO.setProcess(list);
equipTransferEqList.add(jgEquipTransferEq);
});
try {
FeignClientResult result = Workflow.taskV2Client.startByVariableBatch(actWorkflowBatchDTO);
List<Object> returnList = (List<Object>) result.getResult();
for (Object obj : returnList
) {
JSONObject jsonObject = JSON.parseObject(JSONObject.toJSONString(obj));
String instanceId = jsonObject.getString("id");
instanceIdList.add(instanceId);
// 查询下节点任务
if (returnList.get(0).equals(obj)) {
getNext(roleListFirst, instanceId, taskName);
}
// 推动下一个节点
AjaxResult ajaxResult = Workflow.taskClient.getTask(instanceId);
JSONObject dataObject = JSON.parseObject(JSON.toJSONString(ajaxResult.get("data")));
String taskId = dataObject.getString("id");
//组装信息
TaskResultDTO dto = new TaskResultDTO();
dto.setResultCode("approvalStatus");
dto.setTaskId(taskId);
dto.setComment("提交流程");
HashMap<String, Object> map = new HashMap<>();
map.put("approvalStatus", "0");
dto.setVariable(map);
//执行流程
AjaxResult ajaxResult1;
try {
ajaxResult1 = Workflow.taskClient.completeByTask(taskId, dto);
if (ajaxResult1.get("code").equals(200)) {
getNext(roleListSecond, instanceId, taskName);
} else {
log.error("提交失败");
}
} catch (Exception e) {
log.error("提交失败:{}", e.getMessage());
}
}
} catch (Exception e) {
log.error("提交失败:{}", e.getMessage());
this.baseMapper.insertBatchSomeColumn(list);
if (SUBMIT_TYPE_FLOW.equals(submitType)) {
buildTask(list, workflowResultList);
}
List<JgEquipTransferEq> jgEquipTransferEqList = buildJgEquipTransferEqList(equipTransferEqList, list);
jgEquipTransferEqMapper.insertBatchSomeColumn(jgEquipTransferEqList);
}
List<JgEquipTransfer> list = new ArrayList<>();
List<JgEquipTransferEq> equipTransferEqList = new ArrayList<>();
deviceList.forEach(obj -> {
private JgEquipTransferEq buildJgEquipTransferEq(Map<String, Object> obj, String applyNo) {
JgEquipTransferEq jgEquipTransferEq = new JgEquipTransferEq();
jgEquipTransferEq.setEquId(String.valueOf(obj.get("SEQUENCE_NBR")));
jgEquipTransferEq.setEquipTransferId(applyNo);
return jgEquipTransferEq;
}
private JgEquipTransfer buildJgEquipTransfer(JgEquipTransferDto model, String applyNo, ReginParams reginParams,
String submitType, List<WorkflowResultDto> workflowResultList, int i) {
JgEquipTransfer dto = new JgEquipTransfer();
BeanUtils.copyProperties(model, dto);
int i = deviceList.indexOf(obj);
String applyNo = applyNoList.get(i);
dto.setApplyNo(applyNo);
dto.setApplyDate(new Date());
if (SUBMIT_TYPE_FLOW.equals(submitType)) {
dto.setNextExecuteIds(String.join(",", roleListSecond));
dto.setInstanceStatus(String.join(",", roleListFirst));
WorkflowResultDto workflowResult = workflowResultList.get(i);
dto.setNextExecuteIds(workflowResult.getNextExecutorRoleIds());
dto.setInstanceStatus(workflowResult.getNextExecutorRoleIds() + "," + workflowResult.getExecutorRoleIds());
dto.setPromoter(reginParams.getUserModel().getUserId());
dto.setApplyStatus(taskName[0]);
dto.setNextTaskId(workflowResult.getNextTaskId());
}
jgEquipTransferEq.setEquId(String.valueOf(obj.get("SEQUENCE_NBR")));
jgEquipTransferEq.setEquipTransferId(applyNo);
if (!CollectionUtils.isEmpty(instanceIdList)) {
dto.setInstanceId(instanceIdList.get(i));
dto.setApplyStatus(String.valueOf(FlowStatusEnum.TO_BE_PROCESSED.getCode()));
} else {
dto.setApplyStatus(String.valueOf(FlowStatusEnum.TO_BE_SUBMITTED.getCode()));
return dto;
}
list.add(dto);
equipTransferEqList.add(jgEquipTransferEq);
});
this.baseMapper.insertBatchSomeColumn(list);
List<JgEquipTransferEq> jgEquipTransferEqList = equipTransferEqList.stream().map(transferEq -> {
List<JgEquipTransfer> collect = list.stream().filter(transfer -> transferEq.getEquipTransferId().equals(transfer.getApplyNo())).collect(Collectors.toList());
Long sequenceNbr = collect.get(0).getSequenceNbr();
private List<JgEquipTransferEq> buildJgEquipTransferEqList(List<JgEquipTransferEq> equipTransferEqList, List<JgEquipTransfer> list) {
return equipTransferEqList.stream()
.map(transferEq -> {
Long sequenceNbr = list.stream()
.filter(transfer -> transferEq.getEquipTransferId().equals(transfer.getApplyNo()))
.findFirst()
.map(JgEquipTransfer::getSequenceNbr)
.orElse(null);
return transferEq.setEquipTransferId(String.valueOf(sequenceNbr));
}).collect(Collectors.toList());
jgEquipTransferEqMapper.insertBatchSomeColumn(jgEquipTransferEqList);
})
.collect(Collectors.toList());
}
private void convertField(JgEquipTransferDto model) {
if (null == model)
return;
// 分割接收机构
String installUnitId = model.getInstallUnitCreditCode();
if (!ObjectUtils.isEmpty(installUnitId)) {
String[] installUnitIdList = installUnitId.split("_");
if (installUnitIdList.length > 1) {
model.setInstallUnitCreditCode(installUnitIdList[0]);
model.setInstallUnitName(installUnitIdList[1]);
private void handleResponseModel(ResponseModel<List<String>> listResponseModel, String errorMessagePrefix) {
if (listResponseModel == null || listResponseModel.getStatus() != HttpStatus.OK.value()) {
log.error(errorMessagePrefix + "{}", listResponseModel != null ? listResponseModel.getMessage() : "null");
throw new BadRequest("告知单生成失败!");
}
}
private void handleApplyNoList(List<String> applyNoList) {
if (CollectionUtils.isEmpty(applyNoList)) {
log.error("告知单返回为空");
throw new BadRequest("告知单生成失败!");
}
}
void getNext(ArrayList<String> roleListFirst, String instanceId, String[] taskName) {
AjaxResult aj = Workflow.taskClient.getTaskNoAuth(instanceId);
JSONObject taskNoAuth = JSON.parseObject(JSON.toJSONString(aj.get("data")));
if (!org.springframework.util.ObjectUtils.isEmpty(taskNoAuth)) {
String nextTaskId = taskNoAuth.getString("id");
AjaxResult taskGroupName = Workflow.taskClient.getTaskGroupName(nextTaskId);
taskName[0] = taskNoAuth.getString("name");
JSONArray data = JSON.parseArray(JSON.toJSONString(taskGroupName.get("data")));
for (Object datum : data) {
if (((Map) datum).containsKey("groupId")) {
roleListFirst.add(((Map) datum).get("groupId").toString());
/**
* 插入代办
*/
private void buildTask(List<JgEquipTransfer> list, List<WorkflowResultDto> workflowResultList) {
if (CollectionUtils.isEmpty(list) || CollectionUtils.isEmpty(workflowResultList)) {
return;
}
WorkflowResultDto workflowResultDto = workflowResultList.get(0);
List<TaskModelDto> taskModelDtoList = list.stream().map(item -> buildTaskModelDto(item, workflowResultDto)).collect(Collectors.toList());
commonService.buildTaskModel(taskModelDtoList);
}
private TaskModelDto buildTaskModelDto(JgEquipTransfer item, WorkflowResultDto workflowResultDto) {
return TaskModelDto.builder()
.flowCreateDate(item.getCreateDate())
.taskName(workflowResultDto.getNextTaskName())
.taskCode(item.getApplyNo())
.taskType(BusinessTypeEnum.JG_EQUIPMENT_HANDOVER.getCode())
.taskTypeLabel(BusinessTypeEnum.JG_EQUIPMENT_HANDOVER.getName())
.relationId(item.getInstanceId())
.executeUserIds(workflowResultDto.getNextExecutorUserIds())
.taskStatus(commonService.getDictionaryCodeByName(item.getApplyStatus()))
.taskStatusLabel(FlowStatusEnum.TO_BE_PROCESSED.getName())
.startUserId(item.getCreateUserId())
.startUser(item.getCreateUserName())
.startUserCompanyName(item.getCreateUserCompanyName())
.startDate(item.getCreateDate())
.model(item)
.nextExecuteUser(item.getNextExecuteIds())
.build();
}
private List<WorkflowResultDto> workFlowInfo(String submitType, List<Map<String, Object>> deviceList) {
if (!SUBMIT_TYPE_FLOW.equals(submitType)) {
return new ArrayList<>();
}
/**
* 启动工作流
*
* @param businessKey businessKey
* @return s
* @throws Exception e
*/
public String startFlow(String businessKey) throws Exception {
// 重新开启工作流
ActWorkflowBatchDTO actWorkflowBatchDTO = new ActWorkflowBatchDTO();
List<ActWorkflowStartDTO> list = deviceList.stream()
.map(item -> {
ActWorkflowStartDTO dto = new ActWorkflowStartDTO();
dto.setProcessDefinitionKey(EQUIP_TRANSFER_PROCESS_KEY);
dto.setBusinessKey(StringUtils.defaultString(businessKey, "1"));
dto.setBusinessKey(item.get("SEQUENCE_NBR").toString());
dto.setCompleteFirstTask(Boolean.TRUE);
return dto;
})
.collect(Collectors.toList());
AjaxResult ajaxResult = Workflow.taskClient.startByVariable(dto);
if (log.isDebugEnabled()) {
log.debug("开启工作流结果:{}", ajaxResult);
actWorkflowBatchDTO.setProcess(list);
List<ProcessTaskDTO> processTaskDTOS = cmWorkflowService.startBatch(actWorkflowBatchDTO);
// 组装工作流返回的数据
return commonService.buildWorkFlowInfo(processTaskDTOS);
}
private void convertField(JgEquipTransferDto model) {
if (null == model)
return;
// 分割接收机构
String installUnitId = model.getInstallUnitCreditCode();
if (!ObjectUtils.isEmpty(installUnitId)) {
String[] installUnitIdList = installUnitId.split("_");
if (installUnitIdList.length > 1) {
model.setInstallUnitCreditCode(installUnitIdList[0]);
model.setInstallUnitName(installUnitIdList[1]);
}
if (ajaxResult == null || (ajaxResult.get(AjaxResult.CODE_TAG) != null && !"200".equals(ajaxResult.get(AjaxResult.CODE_TAG).toString()))) {
throw new BaseException("开启工作流错误");
}
return ((Map<?, ?>) ajaxResult.get("data")).get("id").toString();
}
@Override
......@@ -303,130 +290,216 @@ public class JgEquipTransferServiceImpl extends BaseService<JgEquipTransferDto,
}
public void accept(JgEquipTransferDto jgEquipTransferDto, String op) {
String[] taskName = new String[]{"流程结束"};
String userId = RequestContext.getExeUserId();
ReginParams reginParams = JSONObject.parseObject(redisUtils.get(RedisKey.buildReginKey(RequestContext.getExeUserId(), RequestContext.getToken())).toString(), ReginParams.class);
JgEquipTransfer jgEquipTransfer = this.baseMapper.selectById(jgEquipTransferDto.getSequenceNbr());
ProcessTaskDTO processTaskDTO;
WorkflowResultDto workflowResultDto;
TaskResultDTO workDto = new TaskResultDTO();
workDto.setResultCode("approvalStatus");
workDto.setTaskId(jgEquipTransfer.getNextTaskId());
HashMap<String, Object> commMap = new HashMap<>();
if (jgEquipTransfer.getApplyStatus().equals("6614") || jgEquipTransfer.getApplyStatus().equals("6615")) {
commMap.put("approvalStatus", "提交");
} else {
commMap.put("approvalStatus", op);
}
workDto.setVariable(commMap);
workDto.setComment(jgEquipTransferDto.getProcessAdvice());
processTaskDTO = cmWorkflowService.complete(jgEquipTransfer.getNextTaskId(), workDto);
// 提取节点等信息
workflowResultDto = commonService.buildWorkFlowInfo(Collections.singletonList(processTaskDTO)).get(0);
jgEquipTransfer.setPromoter(reginParams.getUserModel().getUserId());
TaskV2Model taskV2Model = new TaskV2Model();
jgEquipTransfer.setProcessAdvice(jgEquipTransferDto.getProcessAdvice());
JgEquipTransferEq jgEquipTransferEq = jgEquipTransferEqMapper.selectOne(Wrappers.<JgEquipTransferEq>lambdaQuery().select(JgEquipTransferEq::getEquId)
.eq(JgEquipTransferEq::getEquipTransferId, jgEquipTransferDto.getSequenceNbr()));
ArrayList<String> roleList = new ArrayList<>();
boolean submit = submit(jgEquipTransfer, op);
if (submit) {
getNext(roleList, jgEquipTransferDto.getInstanceId(), taskName);
jgEquipTransfer.setApplyStatus(taskName[0]);
if ("0".equals(op)) {
if (roleList.isEmpty()) {
if (StringUtils.isEmpty(workflowResultDto.getNextExecutorRoleIds())) {
jgEquipTransfer.setApplyStatus(String.valueOf(FlowStatusEnum.TO_BE_FINISHED.getCode()));
jgEquipTransfer.setPromoter("");
if (jgEquipTransferEq != null){
Map<String,Map<String,Object>> resultMap = new HashMap<>();
Map<String,Object> esParamMap =new HashMap<>();
esParamMap.put("USC_UNIT_NAME", jgEquipTransfer.getInstallUnitName());
esParamMap.put("USC_UNIT_CREDIT_CODE", jgEquipTransfer.getInstallUnitName());
resultMap.put(jgEquipTransferEq.getEquId(),esParamMap);
Map<String, Map<String, Object>> resultMap = MapBuilder.<String, Map<String, Object>>create()
.put(jgEquipTransferEq.getEquId(), MapBuilder.<String, Object>create()
.put("USC_UNIT_NAME", jgEquipTransfer.getInstallUnitName())
.put("USC_UNIT_CREDIT_CODE", jgEquipTransfer.getInstallUnitName())
.build())
.build();
tzsServiceFeignClient.commonUpdateEsDataByIds(resultMap);
}
// 上个代办改为已办
taskV2Model = commonService.updateTaskModel(MapBuilder.<String, Object>create()
.put("taskStatus", FlowStatusEnum.TO_BE_FINISHED.getCode())
.put("taskStatusLabel", FlowStatusEnum.TO_BE_FINISHED.getName())
.put("relationId", jgEquipTransfer.getInstanceId())
.build());
} else {
jgEquipTransfer.setNextExecuteIds(String.join(",", roleList));
jgEquipTransfer.setNextExecuteIds(workflowResultDto.getNextExecutorRoleIds());
if (!ObjectUtils.isEmpty(jgEquipTransfer.getInstanceStatus())) {
jgEquipTransfer.setInstanceStatus(jgEquipTransfer.getInstanceStatus() + "," + String.join(",", roleList));
jgEquipTransfer.setInstanceStatus(jgEquipTransfer.getInstanceStatus() + "," + workflowResultDto.getNextExecutorRoleIds());
} else {
jgEquipTransfer.setInstanceStatus(String.join(",", roleList));
jgEquipTransfer.setInstanceStatus(workflowResultDto.getNextExecutorRoleIds());
}
jgEquipTransfer.setPromoter(userId);
jgEquipTransfer.setApplyStatus(String.valueOf(FlowStatusEnum.TO_BE_PROCESSED.getCode()));
// 上个代办改为已办
commonService.updateTaskModel(MapBuilder.<String, Object>create()
.put("taskStatus", FlowStatusEnum.TO_BE_FINISHED.getCode())
.put("taskStatusLabel", FlowStatusEnum.TO_BE_FINISHED.getName())
.put("relationId", jgEquipTransfer.getInstanceId())
.build());
// 创建新的代办
TaskModelDto taskModelDto = TaskModelDto.builder()
.flowCreateDate(taskV2Model.getFlowCreateDate())
.taskName(workflowResultDto.getNextTaskName())
.taskCode(taskV2Model.getTaskCode())
.taskType(taskV2Model.getTaskType())
.taskTypeLabel(taskV2Model.getTaskTypeLabel())
.relationId(taskV2Model.getRelationId())
.executeUserIds(workflowResultDto.getNextExecutorUserIds())
.taskStatus(FlowStatusEnum.TO_BE_PROCESSED.getCode())
.taskStatusLabel(FlowStatusEnum.TO_BE_PROCESSED.getName())
.startUserId(taskV2Model.getStartUserId())
.startUser(taskV2Model.getStartUser())
.startDate(taskV2Model.getStartDate())
.model(jgEquipTransfer)
.nextExecuteUser(workflowResultDto.getNextExecutorRoleIds())
.build();
commonService.buildTaskModel(Collections.singletonList(taskModelDto));
}
} else {
//驳回
jgEquipTransfer.setPromoter("");
jgEquipTransfer.setApplyStatus(String.valueOf(FlowStatusEnum.REJECTED.getCode()));
}
updateById(jgEquipTransfer);
}
}
public boolean submit(JgEquipTransfer transfer, String op) {
AjaxResult ajaxResult = Workflow.taskClient.getTask(transfer.getInstanceId());
JSONObject dataObject = JSON.parseObject(JSON.toJSONString(ajaxResult.get("data")));
String taskId = dataObject.getString("id");
//组装信息
TaskResultDTO dto = new TaskResultDTO();
dto.setResultCode("approvalStatus");
dto.setTaskId(taskId);
dto.setComment("提交流程");
HashMap<String, Object> map = new HashMap<>();
map.put("approvalStatus", op);
dto.setVariable(map);
//执行流程
AjaxResult ajaxResult1;
try {
ajaxResult1 = Workflow.taskClient.completeByTask(taskId, dto);
return ajaxResult1.get("code").equals(200);
} catch (Exception e) {
log.error("提交失败:{}", e.getMessage());
return false;
// 上个代办改为已办
commonService.updateTaskModel(MapBuilder.<String, Object>create()
.put("taskStatus", commonService.getDictionaryCodeByName(jgEquipTransfer.getApplyStatus()))
.put("taskStatusLabel", jgEquipTransfer.getApplyStatus())
.put("relationId", jgEquipTransfer.getInstanceId())
.build());
TaskModelDto taskModelDto = new TaskModelDto();
BeanUtils.copyProperties(taskV2Model, taskModelDto);
// 创建新的代办
taskModelDto.setModel(jgEquipTransfer);
taskModelDto.setTaskName(workflowResultDto.getNextTaskName());
taskModelDto.setExecuteUserIds(workflowResultDto.getNextExecutorUserIds());
taskModelDto.setTaskStatus(FlowStatusEnum.TO_BE_PROCESSED.getCode());
taskModelDto.setTaskStatusLabel(FlowStatusEnum.TO_BE_PROCESSED.getName());
taskModelDto.setNextExecuteUser(workflowResultDto.getNextExecutorRoleIds());
commonService.buildTaskModel(Collections.singletonList(taskModelDto));
}
updateById(jgEquipTransfer);
}
/**
* 撤回
* @param equipTransferInfo equipTransferInfo
*/
public void cancel(JgEquipTransferDto equipTransferInfo) {
FeignClientResult ajaxResult = Workflow.taskV2Client.rollBack(equipTransferInfo.getInstanceId());
JgEquipTransfer equipTransfer = this.baseMapper.selectById(equipTransferInfo.getSequenceNbr());
if (ajaxResult.getStatus() == 200) {
equipTransfer.setApplyStatus(String.valueOf(FlowStatusEnum.TO_BE_SUBMITTED.getCode()));
ProcessTaskDTO processTaskDTO = cmWorkflowService.rollBack(equipTransferInfo.getInstanceId());
WorkflowResultDto workflowResultDto = commonService.buildWorkFlowInfo(Collections.singletonList(processTaskDTO)).get(0);
equipTransfer.setPromoter("");
equipTransfer.setNextExecuteIds(workflowResultDto.getNextExecutorRoleIds());
equipTransfer.setApplyStatus(String.valueOf(FlowStatusEnum.ROLLBACK.getCode()));
this.baseMapper.updateById(equipTransfer);
}
commonService.deleteTaskModel(equipTransfer.getInstanceId());
commonService.rollbackTask(equipTransfer.getInstanceId());
}
public JgEquipTransferDto updateEquipTransfer(String submitType, JgEquipTransferDto equipTransferDto, String op) {
if (Objects.isNull(equipTransferDto) || StringUtils.isEmpty(submitType))
throw new IllegalArgumentException("参数不能为空");
String[] taskName = new String[]{"流程结束"};
ReginParams reginParams = JSONObject.parseObject(redisUtils.get(RedisKey.buildReginKey(
RequestContext.getExeUserId(), RequestContext.getToken())).toString(), ReginParams.class);
// 字段转换
this.convertField(equipTransferDto);
ArrayList<String> roleListFirst = new ArrayList<>();
ArrayList<String> roleListSecond = new ArrayList<>();
equipTransferDto.setPromoter(reginParams.getUserModel().getUserId());
JgEquipTransfer transfer = this.getById(equipTransferDto.getSequenceNbr());
if (SUBMIT_TYPE_FLOW.equals(submitType)) {
AjaxResult ajaxResult;
// 发起流程
if (!org.springframework.util.StringUtils.hasText(equipTransferDto.getInstanceId())) {
// 发起流程
ProcessTaskDTO processTaskDTO;
WorkflowResultDto workflowResultDto;
ActWorkflowBatchDTO actWorkflowBatchDTO = new ActWorkflowBatchDTO();
List<ActWorkflowStartDTO> list = new ArrayList<>();
ActWorkflowStartDTO dto = new ActWorkflowStartDTO();
dto.setProcessDefinitionKey(EQUIP_TRANSFER_PROCESS_KEY);
dto.setBusinessKey("1");
try {
ajaxResult = Workflow.taskClient.startByVariable(dto);
String instanceId = ((Map) ajaxResult.get("data")).get("id").toString();
equipTransferDto.setInstanceId(instanceId);
// 查询下节点任务
getNext(roleListFirst, instanceId, taskName);
equipTransferDto.setInstanceStatus(String.join(",", roleListFirst));
} catch (Exception e) {
log.error("提交失败:{}", e.getMessage());
throw new RuntimeException(e);
}
}
JgEquipTransfer transfer = new JgEquipTransfer();
dto.setBusinessKey(equipTransferDto.getSequenceNbr().toString());
dto.setCompleteFirstTask(Boolean.TRUE);
list.add(dto);
actWorkflowBatchDTO.setProcess(list);
processTaskDTO = cmWorkflowService.startBatch(actWorkflowBatchDTO).get(0);
// 提取节点等信息
workflowResultDto = commonService.buildWorkFlowInfo(Collections.singletonList(processTaskDTO)).get(0);
BeanUtils.copyProperties(equipTransferDto, transfer);
if (!ObjectUtils.isEmpty(transfer.getInstanceStatus())) {
transfer.setInstanceStatus(transfer.getInstanceStatus() + "," + workflowResultDto.getNextExecutorRoleIds());
} else {
transfer.setInstanceStatus(workflowResultDto.getNextExecutorRoleIds());
}
transfer.setPromoter(RequestContext.getExeUserId());
transfer.setNextExecuteIds(String.join(",", workflowResultDto.getNextExecutorRoleIds()));
transfer.setApplyStatus(String.valueOf(FlowStatusEnum.TO_BE_PROCESSED.getCode()));
updateById(transfer);
// 如果为保存并提交,则创建代办
buildTask(Collections.singletonList(transfer), Collections.singletonList(workflowResultDto));
}else {
ProcessTaskDTO processTaskDTO = new ProcessTaskDTO();
WorkflowResultDto workflowResultDto = new WorkflowResultDto();
TaskResultDTO dto = new TaskResultDTO();
dto.setResultCode("approvalStatus");
dto.setTaskId(transfer.getNextTaskId());
HashMap<String, Object> commMap = new HashMap<>();
if (transfer.getApplyStatus().equals("6614") || transfer.getApplyStatus().equals("6615")) {
commMap.put("approvalStatus", "提交");
} else {
commMap.put("approvalStatus", op);
}
dto.setVariable(commMap);
processTaskDTO = cmWorkflowService.complete(transfer.getNextTaskId(), dto);
// 提取节点等信息
workflowResultDto = commonService.buildWorkFlowInfo(Collections.singletonList(processTaskDTO)).get(0);
BeanUtils.copyProperties(equipTransferDto, transfer);
boolean submit = submit(transfer, op);
if (submit) {
// 查询下节点任务
getNext(roleListSecond, transfer.getInstanceId(), taskName);
transfer.setApplyStatus(taskName[0]);
if (!org.springframework.util.ObjectUtils.isEmpty(transfer.getInstanceStatus())) {
transfer.setInstanceStatus(transfer.getInstanceStatus() + "," + roleListSecond);
if (!ObjectUtils.isEmpty(transfer.getInstanceStatus())) {
transfer.setInstanceStatus(transfer.getInstanceStatus() + "," + workflowResultDto.getNextExecutorRoleIds());
} else {
transfer.setInstanceStatus(String.join(",", roleListSecond));
transfer.setInstanceStatus(workflowResultDto.getNextExecutorRoleIds());
}
transfer.setPromoter(RequestContext.getExeUserId());
transfer.setNextExecuteIds(String.join(",", roleListSecond));
transfer.setNextExecuteIds(String.join(",", workflowResultDto.getNextExecutorRoleIds()));
transfer.setApplyStatus(String.valueOf(FlowStatusEnum.TO_BE_PROCESSED.getCode()));
updateById(transfer);
// 上个代办改为已办
HashMap<String, Object> map = new HashMap<>();
map.put("taskStatus", commonService.getDictionaryCodeByName(transfer.getApplyStatus()));
map.put("taskStatusLabel", transfer.getApplyStatus());
map.put("relationId", transfer.getInstanceId());
TaskV2Model taskV2Model = commonService.updateTaskModel(map);
TaskModelDto taskModelDto = new TaskModelDto();
BeanUtils.copyProperties(taskV2Model, taskModelDto);
// 创建新的代办
taskModelDto.setModel(transfer);
taskModelDto.setTaskName(workflowResultDto.getNextTaskName());
taskModelDto.setExecuteUserIds(workflowResultDto.getNextExecutorUserIds());
taskModelDto.setTaskStatus(FlowStatusEnum.TO_BE_PROCESSED.getCode());
taskModelDto.setTaskStatusLabel(FlowStatusEnum.TO_BE_PROCESSED.getName());
taskModelDto.setNextExecuteUser(workflowResultDto.getNextExecutorRoleIds());
commonService.buildTaskModel(Collections.singletonList(taskModelDto));
}
} else {
JgEquipTransfer bean = new JgEquipTransfer();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment