Commit 70679ed7 authored by 韩桐桐's avatar 韩桐桐

Merge remote-tracking branch 'origin/develop_tzs_register' into develop_tzs_register

parents 017e465c 4ef4ca00
......@@ -106,4 +106,9 @@ public class JgChangeRegistrationNameDto extends BaseDto {
private String nextTaskId;
/**
* 下一节点可执行人
*/
private String nextExecuteUserIds;
}
......@@ -148,5 +148,10 @@ public class JgChangeRegistrationName extends BaseEntity {
@TableField("next_task_id")
private String nextTaskId;
/**
* 下一节点可执行人
*/
@TableField("next_execute_user_ids")
private String nextExecuteUserIds;
}
......@@ -109,9 +109,6 @@
jet.instance_status AS instanceStatus,
jet.accept_date AS acceptDate,
jet.task_name AS taskName,
ri.equ_list AS equList,
ri.equ_category AS equCategory,
ri.equ_define AS equDefine,
ri.product_name AS productName,
ri.brand_name AS brandName,
ri.equ_type AS equType,
......
......@@ -175,6 +175,7 @@ public class JgChangeRegistrationNameServiceImpl extends BaseService<JgChangeReg
if (!StringUtils.isEmpty(instanceId)) {
dto.setInstanceId(instanceId);
dto.setNextTaskId(nextTaskId);
dto.setNextExecuteUserIds(nextUserIds);
dto.setAuditStatus(String.valueOf(WorkFlowStatusEnum.UNIT_RENAME_RECEIVE.getPass()));
} else {
dto.setAuditStatus(String.valueOf(WorkFlowStatusEnum.UNIT_RENAME_SUBMIT.getPass()));
......@@ -276,6 +277,7 @@ public class JgChangeRegistrationNameServiceImpl extends BaseService<JgChangeReg
jgChangeRegistrationName.setInstanceId(instanceId);
jgChangeRegistrationName.setNextExecutorIds(String.join(",", roleListNext));
jgChangeRegistrationName.setNextTaskId(nextTaskId);
jgChangeRegistrationName.setNextExecuteUserIds(nextUserIds);
jgChangeRegistrationName.setAuditStatus(WorkFlowStatusEnum.UNIT_RENAME_RECEIVE.getPass());
// 创建待办
createTaskModel(jgChangeRegistrationName, taskName, "1", nextUserIds);
......@@ -301,6 +303,8 @@ public class JgChangeRegistrationNameServiceImpl extends BaseService<JgChangeReg
jgChangeRegistrationName.setNextExecutorIds(String.join(",", roleListNext));
jgChangeRegistrationName.setAuditStatus(WorkFlowStatusEnum.UNIT_RENAME_RECEIVE.getPass());
jgChangeRegistrationName.setNextTaskId(nextTaskId);
// 更新下一步可执行人
jgChangeRegistrationName.setNextExecuteUserIds(nextUserIds);
executeOneStep(jgChangeRegistrationName, taskName, nextUserIds, op);
}
this.updateById(jgChangeRegistrationName);
......@@ -397,6 +401,10 @@ public class JgChangeRegistrationNameServiceImpl extends BaseService<JgChangeReg
jgChangeRegistrationName.setPromoter(RequestContext.getExeUserId());
jgChangeRegistrationName.setNextExecutorIds(String.join(",", roleListNext));
jgChangeRegistrationName.setNextTaskId(nextTaskId);
List<WorkflowResultDto> workflowResultDtos = commonService.buildWorkFlowInfo(Collections.singletonList(processTaskDTO));
// 更新下一步可执行人
String nextUserIds = workflowResultDtos.get(0).getNextExecutorUserIds();
jgChangeRegistrationName.setNextExecuteUserIds(nextUserIds);
this.update(jgChangeRegistrationName, lambda);
// 删除待办
JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(jgChangeRegistrationName));
......@@ -453,6 +461,8 @@ public class JgChangeRegistrationNameServiceImpl extends BaseService<JgChangeReg
jgChangeRegistrationName.setPromoter(RequestContext.getExeUserId());
jgChangeRegistrationName.setInstanceId(instanceId);
jgChangeRegistrationName.setNextTaskId(nextTaskId);
// 更新下一步可执行人
jgChangeRegistrationName.setNextExecuteUserIds(nextUserIds);
if (!ObjectUtils.isEmpty(jgChangeRegistrationName.getInstanceStatus())) {
jgChangeRegistrationName.setInstanceStatus(jgChangeRegistrationName.getInstanceStatus() + "," + String.join(",", roleListNext));
} else {
......@@ -471,6 +481,8 @@ public class JgChangeRegistrationNameServiceImpl extends BaseService<JgChangeReg
} else {
jgChangeRegistrationName.setAuditStatus(FlowStatusEnum.TO_BE_FINISHED.getName());
jgChangeRegistrationName.setAuditPassDate(new Date());
// 完成时 下一步骤可执行人清空
jgChangeRegistrationName.setNextExecuteUserIds("");
// 修改业务信息
updateInfoOther(jgChangeRegistrationName);
// 更新代办
......
......@@ -239,8 +239,8 @@ public class JgChangeRegistrationTransferServiceImpl extends BaseService<JgChang
oldTransfer.setReceiveOrgName(receiveOrgName);
}
//办理状态
oldTransfer.setAuditStatus(FlowStatusEnum.TO_BE_SUBMITTED.getName());
oldTransfer.setStatus(UseStatusEnum.SUBMIT.getPass());
oldTransfer.setAuditStatus(WorkFlowStatusEnum.TRANSFER_RECEIVE.getPass());
oldTransfer.setStatus(WorkFlowStatusEnum.TRANSFER_RECEIVE.getPass());
//es种查询设备信息
SearchRequest request = new SearchRequest();
......
......@@ -39,6 +39,7 @@ import org.typroject.tyboot.core.restful.utils.ResponseModel;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import java.util.stream.Stream;
/**
* 设备移交服务实现类
......@@ -68,259 +69,154 @@ public class JgEquipTransferServiceImpl extends BaseService<JgEquipTransferDto,
@Autowired
CmWorkflowServiceImpl cmWorkflowService;
/**
* 保存和保存并提交
*
* @param submitType 保存或保存并提交
* @param jsonObjectMap 设备移交和设备信息
* @param reginParams redis信息
*/
@Transactional(rollbackFor = {Exception.class, BaseException.class})
public void saveTransfer(String submitType, JSONObject jsonObjectMap, ReginParams reginParams) {
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());
handleResponseModel(listResponseModel, "告知单获取失败: ");
this.handleResponseModel(listResponseModel, "告知单获取失败: ");
List<String> applyNoList = listResponseModel.getResult();
handleApplyNoList(applyNoList);
this.handleApplyNoList(applyNoList);
List<WorkflowResultDto> workflowResultList = workFlowInfo(submitType, deviceList);
//启动工作流
List<WorkflowResultDto> workflowResultList = this.startWorkFlow(submitType, deviceList);
List<JgEquipTransfer> list = new ArrayList<>();
List<JgEquipTransfer> transferList = new ArrayList<>();
List<JgEquipTransferEq> equipTransferEqList = new ArrayList<>();
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.setSupervisoryCode(String.valueOf(obj.get("SUPERVISORY_CODE")));
dto.setEquList(String.valueOf(obj.get("EQU_LIST")));
dto.setCreateUserName(reginParams.getUserModel().getRealName());
dto.setCreateUserId(reginParams.getUserModel().getUserId());
dto.setCreateUserCompanyName(reginParams.getCompany().getCompanyName());
list.add(dto);
JgEquipTransfer transfer = buildJgEquipTransfer(model, applyNo, reginParams, submitType, workflowResultList, i);
transfer.setSupervisoryCode(String.valueOf(obj.get("SUPERVISORY_CODE")));
transfer.setEquList(String.valueOf(obj.get("EQU_LIST")));
transferList.add(transfer);
equipTransferEqList.add(jgEquipTransferEq);
});
this.baseMapper.insertBatchSomeColumn(list);
baseMapper.insertBatchSomeColumn(transferList);
if (SUBMIT_TYPE_FLOW.equals(submitType)) {
buildTask(list, workflowResultList);
this.buildTask(transferList, workflowResultList);
}
List<JgEquipTransferEq> jgEquipTransferEqList = buildJgEquipTransferEqList(equipTransferEqList, list);
List<JgEquipTransferEq> jgEquipTransferEqList = this.buildJgEquipTransferEqList(equipTransferEqList, transferList);
jgEquipTransferEqMapper.insertBatchSomeColumn(jgEquipTransferEqList);
}
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);
dto.setApplyNo(applyNo);
dto.setApplyDate(new Date());
if (SUBMIT_TYPE_FLOW.equals(submitType)) {
WorkflowResultDto workflowResult = workflowResultList.get(i);
dto.setNextExecuteIds(workflowResult.getNextExecutorRoleIds());
dto.setInstanceStatus(workflowResult.getNextExecutorRoleIds() + "," + workflowResult.getExecutorRoleIds());
dto.setPromoter(reginParams.getUserModel().getUserId());
dto.setNextTaskId(workflowResult.getNextTaskId());
}
if (!CollectionUtils.isEmpty(workflowResultList)) {
dto.setInstanceId(workflowResultList.get(i).getInstanceId());
dto.setApplyStatus(String.valueOf(FlowStatusEnum.TO_BE_PROCESSED.getCode()));
} else {
dto.setApplyStatus(String.valueOf(FlowStatusEnum.TO_BE_SUBMITTED.getCode()));
}
return dto;
}
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());
}
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("告知单生成失败!");
}
}
/**
* 插入代办
*/
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);
}
/**
* 组装代办消息
* 暂存
*
* @param item 设备移交信息
* @param workflowResultDto 工作流返回信息
* @return 代办信息
* @param submitType 保存或保存并提交
* @param equipTransferDto 设备移交和设备信息
* @param op
* @return 设备信息
*/
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(FlowStatusEnum.TO_BE_PROCESSED.getCode())
.taskStatusLabel(FlowStatusEnum.TO_BE_PROCESSED.getName())
.flowStatus(FlowStatusEnum.TO_BE_PROCESSED.getCode())
.flowStatusLabel(FlowStatusEnum.TO_BE_PROCESSED.getName())
.taskContent(String.format("来自%s【%s】的业务办理,【申请单号:%s】", item.getEquList(), item.getSupervisoryCode(), item.getApplyNo()))
.taskDesc(String.format("来自%s【%s】的业务办理,【申请单号:%s】", item.getEquList(), item.getSupervisoryCode(), item.getApplyNo()))
.startUserId(item.getCreateUserId())
.startUser(item.getCreateUserName())
.startUserCompanyName(item.getCreateUserCompanyName())
.startDate(item.getCreateDate())
.model(item)
.nextExecuteUser(item.getNextExecuteIds())
.build();
}
/**
* 启动工作流
* @param submitType 提交类型
* @param deviceList 设备列表
* @return 工作流信息
*/
private List<WorkflowResultDto> workFlowInfo(String submitType, List<Map<String, Object>> deviceList) {
if (!SUBMIT_TYPE_FLOW.equals(submitType)) {
return new ArrayList<>();
}
ActWorkflowBatchDTO actWorkflowBatchDTO = new ActWorkflowBatchDTO();
List<ActWorkflowStartDTO> list = deviceList.stream()
.map(item -> {
ActWorkflowStartDTO dto = new ActWorkflowStartDTO();
dto.setProcessDefinitionKey(EQUIP_TRANSFER_PROCESS_KEY);
dto.setBusinessKey(item.get("SEQUENCE_NBR").toString());
dto.setCompleteFirstTask(Boolean.TRUE);
return dto;
})
.collect(Collectors.toList());
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]);
}
}
}
@Override
public Page<JgEquipTransferDto> queryForJgEquipTransferPage(Page<JgEquipTransferDto> page, JgEquipTransferDto dto, String type, ReginParams reginParams) {
Page<JgEquipTransferDto> equipTransferPage = this.baseMapper.queryForPage(page, dto, type, reginParams.getCompany().getCompanyCode());
Page<JgEquipTransferDto> equipTransferDtoPage = new Page<>();
BeanUtils.copyProperties(equipTransferPage, equipTransferDtoPage, "records");
List<JgEquipTransferDto> records = equipTransferPage.getRecords().stream().map(transfer -> {
JgEquipTransferDto equipTransferDto = new JgEquipTransferDto();
BeanUtils.copyProperties(transfer, equipTransferDto);
if (Objects.nonNull(transfer.getApplyStatus())) {
equipTransferDto.setApplyStatusDesc(FlowStatusEnum.getNameByType(Long.valueOf(transfer.getApplyStatus())));
}
return equipTransferDto;
}).collect(Collectors.toList());
equipTransferDtoPage.setRecords(records);
return equipTransferDtoPage;
}
@Override
public Map<String, Object> queryBySequenceNbr(Long sequenceNbr) {
JgEquipTransfer equipTransfer = this.baseMapper.selectById(sequenceNbr);
if (Objects.isNull(equipTransfer)) {
return null;
}
Map<String, Object> equipTransferInfo = new HashMap<>();
public JgEquipTransferDto updateEquipTransfer(String submitType, JgEquipTransferDto equipTransferDto, String op) {
if (Objects.isNull(equipTransferDto) || StringUtils.isEmpty(submitType))
throw new IllegalArgumentException("参数不能为空");
String[] fields = {"productPhoto", "designDoc", "designStandard", "factoryStandard",
"productQualityYieldProve", "insUseMaintainExplain", "inspectReport",
"proxyStatementAttachment", "installContractAttachment"};
ReginParams reginParams = JSONObject.parseObject(redisUtils.get(RedisKey.buildReginKey(
RequestContext.getExeUserId(), RequestContext.getToken())).toString(), ReginParams.class);
this.convertField(equipTransferDto);
List<Map<String, Object>> equipmentInfos = this.baseMapper.queryEquipInformation(sequenceNbr);
equipTransferDto.setPromoter(reginParams.getUserModel().getUserId());
handleJsonArrayFields(equipTransferInfo, fields);
handleJsonArrayFields(equipmentInfos.get(0), fields);
JgEquipTransfer transfer = this.getById(equipTransferDto.getSequenceNbr());
if (SUBMIT_TYPE_FLOW.equals(submitType)) {
if (!org.springframework.util.StringUtils.hasText(equipTransferDto.getInstanceId())) {
// 发起流程
ActWorkflowBatchDTO actWorkflowBatchDTO = new ActWorkflowBatchDTO();
List<ActWorkflowStartDTO> list = new ArrayList<>();
ActWorkflowStartDTO dto = new ActWorkflowStartDTO();
dto.setProcessDefinitionKey(EQUIP_TRANSFER_PROCESS_KEY);
dto.setBusinessKey(equipTransferDto.getSequenceNbr().toString());
dto.setCompleteFirstTask(Boolean.TRUE);
list.add(dto);
actWorkflowBatchDTO.setProcess(list);
ProcessTaskDTO processTaskDTO = cmWorkflowService.startBatch(actWorkflowBatchDTO).get(0);
// 提取节点等信息
WorkflowResultDto 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()));
transfer.setNextTaskId(workflowResultDto.getNextTaskId());
Map<String, Object> resultMap = new HashMap<>();
resultMap.putAll(equipTransferInfo);
resultMap.putAll(equipmentInfos.get(0));
resultMap.putAll(createEquipTransferInfo(equipTransfer));
return resultMap;
}
updateById(transfer);
// 如果为保存并提交,则创建代办
this.buildTask(Collections.singletonList(transfer), Collections.singletonList(workflowResultDto));
} else {
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 processTaskDTO = cmWorkflowService.complete(transfer.getNextTaskId(), dto);
// 提取节点等信息
WorkflowResultDto workflowResultDto = commonService.buildWorkFlowInfo(Collections.singletonList(processTaskDTO)).get(0);
BeanUtils.copyProperties(equipTransferDto, transfer);
private Map<String, Object> createEquipTransferInfo(JgEquipTransfer equipTransfer) {
Map<String, Object> equipTransferInfo = new HashMap<>(BeanUtil.beanToMap(equipTransfer));
equipTransferInfo.put("installUnitCreditCode", equipTransfer.getInstallUnitCreditCode() + "_" + equipTransfer.getInstallUnitName());
return equipTransferInfo;
}
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()));
transfer.setNextTaskId(workflowResultDto.getNextTaskId());
private void handleJsonArrayFields(Map<String, Object> map, String[] fields) {
for (String field : fields) {
map.computeIfPresent(field, (key, value) -> JSON.parseArray(value.toString()));
updateById(transfer);
// 上个代办改为已办
TaskV2Model taskV2Model = this.updateLastTodo(transfer, FlowStatusEnum.TO_BE_PROCESSED);
// 创建新的代办
this.createNewTodo(transfer, workflowResultDto, taskV2Model, FlowStatusEnum.TO_BE_PROCESSED);
}
} else {
JgEquipTransfer equipTransfer = new JgEquipTransfer();
BeanUtils.copyProperties(equipTransferDto, equipTransfer);
updateById(equipTransfer);
}
return equipTransferDto;
}
/**
* 通过和驳回
*
* @param jgEquipTransferDto 设备信息
* @param op 通过或驳回
*/
public void accept(JgEquipTransferDto jgEquipTransferDto, String op) {
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());
JgEquipTransfer jgEquipTransfer = baseMapper.selectById(jgEquipTransferDto.getSequenceNbr());
ProcessTaskDTO processTaskDTO;
WorkflowResultDto workflowResultDto;
TaskResultDTO workDto = new TaskResultDTO();
workDto.setResultCode("approvalStatus");
workDto.setTaskId(jgEquipTransfer.getNextTaskId());
......@@ -332,12 +228,12 @@ public class JgEquipTransferServiceImpl extends BaseService<JgEquipTransferDto,
}
workDto.setVariable(commMap);
workDto.setComment(jgEquipTransferDto.getProcessAdvice());
processTaskDTO = cmWorkflowService.complete(jgEquipTransfer.getNextTaskId(), workDto);
ProcessTaskDTO processTaskDTO = cmWorkflowService.complete(jgEquipTransfer.getNextTaskId(), workDto);
// 提取节点等信息
workflowResultDto = commonService.buildWorkFlowInfo(Collections.singletonList(processTaskDTO)).get(0);
WorkflowResultDto workflowResultDto = commonService.buildWorkFlowInfo(Collections.singletonList(processTaskDTO)).get(0);
jgEquipTransfer.setPromoter(reginParams.getUserModel().getUserId());
TaskV2Model taskV2Model = new TaskV2Model();
TaskV2Model taskV2Model;
jgEquipTransfer.setProcessAdvice(jgEquipTransferDto.getProcessAdvice());
JgEquipTransferEq jgEquipTransferEq = jgEquipTransferEqMapper.selectOne(Wrappers.<JgEquipTransferEq>lambdaQuery().select(JgEquipTransferEq::getEquId)
......@@ -358,13 +254,7 @@ public class JgEquipTransferServiceImpl extends BaseService<JgEquipTransferDto,
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("flowStatus", FlowStatusEnum.TO_BE_FINISHED.getCode())
.put("flowStatusLabel", FlowStatusEnum.TO_BE_FINISHED.getName())
.put("relationId", jgEquipTransfer.getInstanceId())
.build());
this.updateLastTodo(jgEquipTransfer, FlowStatusEnum.TO_BE_FINISHED);
} else {
jgEquipTransfer.setNextExecuteIds(workflowResultDto.getNextExecutorRoleIds());
if (!ObjectUtils.isEmpty(jgEquipTransfer.getInstanceStatus())) {
......@@ -374,163 +264,96 @@ public class JgEquipTransferServiceImpl extends BaseService<JgEquipTransferDto,
}
jgEquipTransfer.setPromoter(userId);
jgEquipTransfer.setApplyStatus(String.valueOf(FlowStatusEnum.TO_BE_PROCESSED.getCode()));
jgEquipTransfer.setNextTaskId(workflowResultDto.getNextTaskId());
// 上个代办改为已办
commonService.updateTaskModel(MapBuilder.<String, Object>create()
.put("taskStatus", FlowStatusEnum.TO_BE_FINISHED.getCode())
.put("taskStatusLabel", FlowStatusEnum.TO_BE_FINISHED.getName())
.put("flowStatus", FlowStatusEnum.TO_BE_FINISHED.getCode())
.put("flowStatusLabel", FlowStatusEnum.TO_BE_FINISHED.getName())
.put("relationId", jgEquipTransfer.getInstanceId())
.build());
taskV2Model = this.updateLastTodo(jgEquipTransfer, FlowStatusEnum.TO_BE_FINISHED);
// 创建新的代办
this.createNewTodo(jgEquipTransfer, workflowResultDto, taskV2Model);
this.createNewTodo(jgEquipTransfer, workflowResultDto, taskV2Model, FlowStatusEnum.TO_BE_PROCESSED);
}
} else {
//驳回
jgEquipTransfer.setPromoter("");
jgEquipTransfer.setApplyStatus(String.valueOf(FlowStatusEnum.REJECTED.getCode()));
jgEquipTransfer.setSupervisoryCode(jgEquipTransferDto.getSupervisoryCode());
jgEquipTransfer.setEquList(jgEquipTransferDto.getEquList());
jgEquipTransfer.setNextTaskId(workflowResultDto.getNextTaskId());
// 上个代办改为驳回
TaskV2Model taskV2Model1 = this.updateLastTodo(jgEquipTransfer, FlowStatusEnum.REJECTED);
TaskModelDto taskModelDto = TaskModelDto.builder()
.taskName(workflowResultDto.getNextTaskName())
.executeUserIds(workflowResultDto.getNextExecutorUserIds())
.taskStatusLabel(FlowStatusEnum.TO_BE_PROCESSED.getName())
.flowStatus(FlowStatusEnum.TO_BE_PROCESSED.getCode())
.flowStatusLabel(FlowStatusEnum.TO_BE_PROCESSED.getName())
.nextExecuteUser(workflowResultDto.getNextExecutorRoleIds())
.model(jgEquipTransfer)
.startUserId(taskV2Model1.getStartUserId())
.startUser(taskV2Model1.getStartUser())
.startDate(taskV2Model1.getStartDate())
.flowCreateDate(taskV2Model1.getFlowCreateDate())
.taskContent(String.format("来自%s【%s】的业务办理,【申请单号:%s】", jgEquipTransferDto.getEquList(), jgEquipTransferDto.getSupervisoryCode(), jgEquipTransferDto.getApplyNo()))
.taskDesc(String.format("来自%s【%s】的业务办理,【申请单号:%s】", jgEquipTransferDto.getEquList(), jgEquipTransferDto.getSupervisoryCode(), jgEquipTransferDto.getApplyNo()))
.startUserCompanyName(reginParams.getCompany().getCompanyName())
.taskName(workflowResultDto.getNextTaskName())
.taskCode(taskV2Model1.getTaskCode())
.taskType(taskV2Model1.getTaskType())
.taskTypeLabel(taskV2Model1.getTaskTypeLabel())
.relationId(taskV2Model1.getRelationId())
.build();
commonService.buildTaskModel(Collections.singletonList(taskModelDto));
taskV2Model = this.updateLastTodo(jgEquipTransfer, FlowStatusEnum.REJECTED);
this.createNewTodo(jgEquipTransfer, workflowResultDto, taskV2Model, FlowStatusEnum.TO_BE_SUBMITTED);
}
updateById(jgEquipTransfer);
}
/**
* 撤回
* 撤回操作
*
* @param equipTransferInfo equipTransferInfo
* @param equipTransferInfo 设备移交信息
*/
public void cancel(JgEquipTransferDto equipTransferInfo) {
JgEquipTransfer equipTransfer = this.baseMapper.selectById(equipTransferInfo.getSequenceNbr());
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);
JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(equipTransfer));
jsonObject.put("nextTaskId", equipTransfer.getNextTaskId());
jsonObject.put("nextExecuteUser", equipTransfer.getNextExecuteIds());
jsonObject.put("taskType", BusinessTypeEnum.JG_EQUIPMENT_HANDOVER.getCode());
commonService.rollbackTask(equipTransfer.getInstanceId(), jsonObject);
// 查询装备移交信息
JgEquipTransfer equipTransfer = baseMapper.selectById(equipTransferInfo.getSequenceNbr());
if (equipTransfer != null) {
// 回滚工作流
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()));
equipTransfer.setNextTaskId(workflowResultDto.getNextTaskId());
baseMapper.updateById(equipTransfer);
commonService.rollbackTask(equipTransfer.getInstanceId(), new JSONObject(MapBuilder.<String, Object>create()
.put("nextTaskId", equipTransfer.getNextTaskId())
.put("nextExecuteUser", equipTransfer.getNextExecuteIds())
.put("taskType", BusinessTypeEnum.JG_EQUIPMENT_HANDOVER.getCode())
.build()));
}
}
public JgEquipTransferDto updateEquipTransfer(String submitType, JgEquipTransferDto equipTransferDto, String op) {
if (Objects.isNull(equipTransferDto) || StringUtils.isEmpty(submitType))
throw new IllegalArgumentException("参数不能为空");
@Override
public Page<JgEquipTransferDto> queryForJgEquipTransferPage(Page<JgEquipTransferDto> page, JgEquipTransferDto dto, String type, ReginParams reginParams) {
Page<JgEquipTransferDto> equipTransferPage = this.baseMapper.queryForPage(page, dto, type, reginParams.getCompany().getCompanyCode());
Page<JgEquipTransferDto> equipTransferDtoPage = new Page<>();
BeanUtils.copyProperties(equipTransferPage, equipTransferDtoPage, "records");
List<JgEquipTransferDto> records = equipTransferPage.getRecords().stream().map(transfer -> {
JgEquipTransferDto equipTransferDto = new JgEquipTransferDto();
BeanUtils.copyProperties(transfer, equipTransferDto);
if (Objects.nonNull(transfer.getApplyStatus())) {
equipTransferDto.setApplyStatusDesc(FlowStatusEnum.getNameByType(Long.valueOf(transfer.getApplyStatus())));
}
return equipTransferDto;
}).collect(Collectors.toList());
equipTransferDtoPage.setRecords(records);
ReginParams reginParams = JSONObject.parseObject(redisUtils.get(RedisKey.buildReginKey(
RequestContext.getExeUserId(), RequestContext.getToken())).toString(), ReginParams.class);
this.convertField(equipTransferDto);
return equipTransferDtoPage;
}
equipTransferDto.setPromoter(reginParams.getUserModel().getUserId());
JgEquipTransfer transfer = this.getById(equipTransferDto.getSequenceNbr());
if (SUBMIT_TYPE_FLOW.equals(submitType)) {
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(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;
WorkflowResultDto 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);
@Override
public Map<String, Object> queryBySequenceNbr(Long sequenceNbr) {
JgEquipTransfer equipTransfer = baseMapper.selectById(sequenceNbr);
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);
// 上个代办改为已办
TaskV2Model taskV2Model = this.updateLastTodo(transfer,FlowStatusEnum.TO_BE_PROCESSED);
// 创建新的代办
this.createNewTodo(transfer, workflowResultDto, taskV2Model);
}
} else {
JgEquipTransfer bean = new JgEquipTransfer();
BeanUtils.copyProperties(equipTransferDto, bean);
updateById(bean);
}
return equipTransferDto;
if (Objects.isNull(equipTransfer))
return null;
return Stream.concat(
createEquipTransferInfo(equipTransfer).entrySet().stream(),
baseMapper.queryEquipInformation(sequenceNbr).get(0).entrySet().stream()
)
.filter(entry -> entry.getValue() != null)
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (existing, replacement) -> existing));
}
/**
* 上个代办改为已办
*
* @param transfer 设备信息
* @return 代办信息
*/
private TaskV2Model updateLastTodo(JgEquipTransfer transfer, FlowStatusEnum statusEnum) {
return commonService.updateTaskModel(MapBuilder.<String, Object>create()
.put("taskStatus", statusEnum.getCode())
.put("taskStatusLabel",statusEnum.getName())
.put("taskStatusLabel", statusEnum.getName())
.put("flowStatus", statusEnum.getCode())
.put("flowStatusLabel", statusEnum.getName())
.put("relationId", transfer.getInstanceId())
......@@ -538,12 +361,57 @@ public class JgEquipTransferServiceImpl extends BaseService<JgEquipTransferDto,
}
/**
* 插入代办
*/
private void buildTask(List<JgEquipTransfer> list, List<WorkflowResultDto> workflowResultList) {
if (CollectionUtils.isEmpty(list) || CollectionUtils.isEmpty(workflowResultList)) {
return;
}
List<TaskModelDto> taskModelDtoList = list.stream().map(item ->
this.buildTaskModelDto(item, workflowResultList.get(0))).collect(Collectors.toList());
commonService.buildTaskModel(taskModelDtoList);
}
/**
* 组装代办消息
*
* @param item 设备移交信息
* @param workflowResultDto 工作流返回信息
* @return 代办信息
*/
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(FlowStatusEnum.TO_BE_PROCESSED.getCode())
.taskStatusLabel(FlowStatusEnum.TO_BE_PROCESSED.getName())
.flowStatus(FlowStatusEnum.TO_BE_PROCESSED.getCode())
.flowStatusLabel(FlowStatusEnum.TO_BE_PROCESSED.getName())
.taskContent(String.format("来自%s【%s】的业务办理,【申请单号:%s】", item.getEquList(), item.getSupervisoryCode(), item.getApplyNo()))
.taskDesc(String.format("来自%s【%s】的业务办理,【申请单号:%s】", item.getEquList(), item.getSupervisoryCode(), item.getApplyNo()))
.startUserId(item.getCreateUserId())
.startUser(item.getCreateUserName())
.startUserCompanyName(item.getCreateUserCompanyName())
.startDate(item.getCreateDate())
.model(item)
.nextExecuteUser(item.getNextExecuteIds())
.build();
}
/**
* 创建新代办
* @param transfer 设备信息
*
* @param transfer 设备信息
* @param workflowResultDto 工作流信息
* @param taskV2Model 代办信息
* @param taskV2Model 代办信息
*/
private void createNewTodo(JgEquipTransfer transfer, WorkflowResultDto workflowResultDto, TaskV2Model taskV2Model) {
private void createNewTodo(JgEquipTransfer transfer, WorkflowResultDto workflowResultDto, TaskV2Model taskV2Model, FlowStatusEnum statusEnum) {
ReginParams reginParams = JSONObject.parseObject(redisUtils.get(RedisKey.buildReginKey(RequestContext.getExeUserId(), RequestContext.getToken())).toString(), ReginParams.class);
TaskModelDto taskModelDto = TaskModelDto.builder()
.flowCreateDate(taskV2Model.getFlowCreateDate())
......@@ -553,9 +421,9 @@ public class JgEquipTransferServiceImpl extends BaseService<JgEquipTransferDto,
.taskTypeLabel(taskV2Model.getTaskTypeLabel())
.relationId(taskV2Model.getRelationId())
.executeUserIds(workflowResultDto.getNextExecutorUserIds())
.taskStatusLabel(FlowStatusEnum.TO_BE_PROCESSED.getName())
.flowStatus(FlowStatusEnum.TO_BE_PROCESSED.getCode())
.flowStatusLabel(FlowStatusEnum.TO_BE_PROCESSED.getName())
.taskStatusLabel(statusEnum.getName())
.flowStatus(statusEnum.getCode())
.flowStatusLabel(statusEnum.getName())
.taskContent(String.format("来自%s【%s】的业务办理,【申请单号:%s】", transfer.getEquList(), transfer.getSupervisoryCode(), transfer.getApplyNo()))
.taskDesc(String.format("来自%s【%s】的业务办理,【申请单号:%s】", transfer.getEquList(), transfer.getSupervisoryCode(), transfer.getApplyNo()))
.startUserCompanyName(reginParams.getCompany().getCompanyName())
......@@ -567,4 +435,117 @@ public class JgEquipTransferServiceImpl extends BaseService<JgEquipTransferDto,
.build();
commonService.buildTaskModel(Collections.singletonList(taskModelDto));
}
/**
* 启动工作流
*
* @param submitType 提交类型
* @param deviceList 设备列表
* @return 工作流信息
*/
private List<WorkflowResultDto> startWorkFlow(String submitType, List<Map<String, Object>> deviceList) {
if (!SUBMIT_TYPE_FLOW.equals(submitType)) {
return new ArrayList<>();
}
ActWorkflowBatchDTO actWorkflowBatchDTO = new ActWorkflowBatchDTO();
List<ActWorkflowStartDTO> list = deviceList.stream()
.map(item -> {
ActWorkflowStartDTO dto = new ActWorkflowStartDTO();
dto.setProcessDefinitionKey(EQUIP_TRANSFER_PROCESS_KEY);
dto.setBusinessKey(item.get("SEQUENCE_NBR").toString());
dto.setCompleteFirstTask(Boolean.TRUE);
return dto;
})
.collect(Collectors.toList());
actWorkflowBatchDTO.setProcess(list);
List<ProcessTaskDTO> processTaskDTOS = cmWorkflowService.startBatch(actWorkflowBatchDTO);
// 组装工作流返回的数据
return commonService.buildWorkFlowInfo(processTaskDTOS);
}
/**
* 字段拼接
*
* @param model 设备信息
*/
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 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);
dto.setApplyNo(applyNo);
dto.setApplyDate(new Date());
dto.setCreateUserName(reginParams.getUserModel().getRealName());
dto.setCreateUserId(reginParams.getUserModel().getUserId());
dto.setCreateUserCompanyName(reginParams.getCompany().getCompanyName());
if (SUBMIT_TYPE_FLOW.equals(submitType)) {
WorkflowResultDto workflowResult = workflowResultList.get(i);
dto.setNextExecuteIds(workflowResult.getNextExecutorRoleIds());
dto.setInstanceStatus(workflowResult.getNextExecutorRoleIds() + "," + workflowResult.getExecutorRoleIds());
dto.setPromoter(reginParams.getUserModel().getUserId());
dto.setNextTaskId(workflowResult.getNextTaskId());
}
if (!CollectionUtils.isEmpty(workflowResultList)) {
dto.setInstanceId(workflowResultList.get(i).getInstanceId());
dto.setApplyStatus(String.valueOf(FlowStatusEnum.TO_BE_PROCESSED.getCode()));
} else {
dto.setApplyStatus(String.valueOf(FlowStatusEnum.TO_BE_SUBMITTED.getCode()));
}
return dto;
}
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());
}
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("告知单生成失败!");
}
}
private Map<String, Object> createEquipTransferInfo(JgEquipTransfer equipTransfer) {
Map<String, Object> equipTransferInfo = new HashMap<>(BeanUtil.beanToMap(equipTransfer));
equipTransferInfo.put("installUnitCreditCode", equipTransfer.getInstallUnitCreditCode() + "_" + equipTransfer.getInstallUnitName());
return equipTransferInfo;
}
}
\ No newline at end of file
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