Commit caab6266 authored by 王果's avatar 王果

27994 注销报废限制设备不能多次出现在执行的流程中

parent 41e16c4c
......@@ -3,6 +3,7 @@ package com.yeejoin.amos.boot.module.jg.api.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.module.common.api.dto.DPFilterParamDto;
import com.yeejoin.amos.boot.module.jg.api.dto.CompanyEquipCountDto;
import com.yeejoin.amos.boot.module.jg.api.dto.EquipBizCountDto;
import com.yeejoin.amos.boot.module.jg.api.dto.JgScrapCancelDto;
import com.yeejoin.amos.boot.module.jg.api.entity.JgScrapCancel;
......@@ -48,4 +49,6 @@ public interface JgScrapCancelMapper extends BaseMapper<JgScrapCancel> {
List<EquipBizCountDto> queryScrappedDeviceStaticListData(DPFilterParamDto dpFilterParamDto);
Integer getScrappedDeviceCount(@Param("dpFilterParamDto") DPFilterParamDto dpFilterParamDto);
List<CompanyEquipCountDto> queryForFlowingEquipList();
}
......@@ -281,4 +281,13 @@
c.equ_category
</select>
<select id="queryForFlowingEquipList" resultType="com.yeejoin.amos.boot.module.jg.api.dto.CompanyEquipCountDto">
select a.use_unit_code as companyCode,
group_concat(b.equ_id ) as records
from tzs_jg_scrap_cancel a,
tzs_jg_scrap_cancel_eq b
where a.sequence_nbr = b.equip_transfer_id
and a.audit_status in ('三级待受理', '二级待受理', '一级待受理')
GROUP BY a.use_unit_code
</select>
</mapper>
package com.yeejoin.amos.boot.module.jg.biz.service.impl;
import com.yeejoin.amos.boot.module.jg.api.dto.CompanyEquipCountDto;
import com.yeejoin.amos.boot.module.jg.api.mapper.JgScrapCancelMapper;
import lombok.extern.slf4j.Slf4j;
import org.redisson.api.RBucket;
import org.redisson.api.RedissonClient;
import org.springframework.stereotype.Component;
import java.util.Arrays;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
/**
* @author Administrator
*/
@Component
@Slf4j
public class JgScrapCancelEquipUsedCheckImpl extends BaseEquipUsedCheckService {
private RedissonClient redissonClient;
private String bizType = "jgScrapCancelAdd";
private JgScrapCancelMapper mapper;
public JgScrapCancelEquipUsedCheckImpl(RedissonClient redissonClient, JgScrapCancelMapper mapper) {
this.redissonClient = redissonClient;
this.mapper = mapper;
}
@Override
public RedissonClient getRedisClient() {
return redissonClient;
}
@Override
public String getApplyBizType() {
return bizType;
}
@Override
public void init() {
// 初始化已经完成或者在流程中安装告知的设备数据
List<CompanyEquipCountDto> companyEquipCountDtos = mapper.queryForFlowingEquipList();
companyEquipCountDtos.forEach(c -> {
RBucket<Set<String>> rBucket = redissonClient.getBucket(getFlowingEquipRedisKey(c.getCompanyCode(), bizType));
rBucket.set(Arrays.stream(c.getRecords().split(",")).collect(Collectors.toSet()));
});
}
}
......@@ -23,6 +23,9 @@ import com.yeejoin.amos.boot.module.jg.api.mapper.JgScrapCancelMapper;
import com.yeejoin.amos.boot.module.jg.api.mapper.JgUseRegistrationManageMapper;
import com.yeejoin.amos.boot.module.jg.api.service.IJgScrapCancelService;
import com.yeejoin.amos.boot.module.jg.api.vo.SortVo;
import com.yeejoin.amos.boot.module.jg.biz.config.LocalBadRequest;
import com.yeejoin.amos.boot.module.jg.biz.context.EquipUsedCheckStrategyContext;
import com.yeejoin.amos.boot.module.jg.biz.context.FlowingEquipRedisContext;
import com.yeejoin.amos.boot.module.jg.biz.feign.TzsServiceFeignClient;
import com.yeejoin.amos.boot.module.jg.biz.service.IIdxBizJgRegisterInfoService;
import com.yeejoin.amos.boot.module.jg.flc.api.fegin.WorkFlowFeignService;
......@@ -71,6 +74,8 @@ public class JgScrapCancelServiceImpl extends BaseService<JgScrapCancelDto, JgSc
private static final String SUBMIT_TYPE_FLOW = "1";
private static final String PAGE_KEY = "jgScrapCancelAdd";
private static final String template = "%s发起%s%s业务申请,【申请单号:%s】";
private final List<String> NOT_FLOWING_STATE = Arrays.asList("使用单位待提交", "一级受理已驳回", "使用单位已撤回", "已作废", "已完成");
@Autowired
WorkFlowFeignService workFlowFeginService;
@Autowired
......@@ -178,94 +183,164 @@ public class JgScrapCancelServiceImpl extends BaseService<JgScrapCancelDto, JgSc
@Transactional(rollbackFor = Exception.class)
@GlobalTransactional(rollbackFor = Exception.class)
public JgScrapCancelDto save(String submitType, Map<String, Object> mapParams) {
ReginParams reginParams = this.getSelectedOrgInfo();
Map<String, Object> noticeParams = (Map) mapParams.get(PAGE_KEY);
String[] receiveOrg = String.valueOf(noticeParams.get("receiveOrgCreditCode")).split("_");
noticeParams.remove("record");
String[] taskName = new String[]{"流程结束"};
JgScrapCancelDto model = JSON.parseObject(JSON.toJSONString(noticeParams), JgScrapCancelDto.class);
model.setReceiveOrgCode(receiveOrg[0]);
model.setReceiveCompanyCode(receiveOrg[0]);
model.setReceiveOrgName(receiveOrg[1]);
// 字段转换
convertField(model);
// 获取告知单号 调整之前YZBF为ZX,
ResponseModel<List<String>> listResponseModel = tzsServiceFeignClient.applicationFormCode(ApplicationFormTypeEnum.getCode.get(String.valueOf(noticeParams.get("businessCode"))), 1);
if (!ObjectUtils.isEmpty(listResponseModel) && listResponseModel.getStatus() != HttpStatus.OK.value()) {
log.error(" 获取告知单号失败");
throw new BadRequest("获取告知单号失败");
}
try {
ReginParams reginParams = this.getSelectedOrgInfo();
Map<String, Object> noticeParams = (Map) mapParams.get(PAGE_KEY);
String[] receiveOrg = String.valueOf(noticeParams.get("receiveOrgCreditCode")).split("_");
noticeParams.remove("record");
String[] taskName = new String[]{"流程结束"};
JgScrapCancelDto model = JSON.parseObject(JSON.toJSONString(noticeParams), JgScrapCancelDto.class);
model.setReceiveOrgCode(receiveOrg[0]);
model.setReceiveCompanyCode(receiveOrg[0]);
model.setReceiveOrgName(receiveOrg[1]);
// 字段转换
convertField(model);
// 获取告知单号 调整之前YZBF为ZX,
ResponseModel<List<String>> listResponseModel = tzsServiceFeignClient.applicationFormCode(ApplicationFormTypeEnum.getCode.get(String.valueOf(noticeParams.get("businessCode"))), 1);
if (!ObjectUtils.isEmpty(listResponseModel) && listResponseModel.getStatus() != HttpStatus.OK.value()) {
log.error(" 获取告知单号失败");
throw new BadRequest("获取告知单号失败");
}
String instanceId = "";
String nextTaskId = "";
String nextUserIds = "";
List<ProcessTaskDTO> processTaskDTOS;
List<String> roleListNext = new ArrayList<>();
List<String> roleListAll = new ArrayList<>();
List<String> applyNoList = listResponseModel.getResult();
if (CollectionUtils.isEmpty(applyNoList)) {
return null;
}
// 判断当前是否为提交
List<WorkflowResultDto> workflowResultDtos = null;
if (SUBMIT_TYPE_FLOW.equals(submitType)) {
// 发起流程
ActWorkflowBatchDTO actWorkflowBatchDTO = new ActWorkflowBatchDTO();
List<ActWorkflowStartDTO> list = new ArrayList<>();
ActWorkflowStartDTO dto = new ActWorkflowStartDTO();
dto.setProcessDefinitionKey("scrapCancelNew");
dto.setBusinessKey(applyNoList.get(0));
dto.setCompleteFirstTask(Boolean.TRUE);
// 下一节点执行人单位(下节点接收机构code)
dto.setNextExecuteUserCompanyCode(model.getReceiveCompanyCode());
list.add(dto);
actWorkflowBatchDTO.setProcess(list);
processTaskDTOS = cmWorkflowService.startBatch(actWorkflowBatchDTO);
this.buildRoleList(processTaskDTOS, roleListNext, roleListAll);
instanceId = processTaskDTOS.get(0).getProcessInstance().getId();
nextTaskId = processTaskDTOS.get(0).getNextTask().get(0).getId();
taskName[0] = processTaskDTOS.get(0).getNextTask().get(0).getName();
workflowResultDtos = commonService.buildWorkFlowInfo(processTaskDTOS);
nextUserIds = workflowResultDtos.get(0).getNextExecutorUserIds();
this.buildRoleList(processTaskDTOS, roleListNext, roleListAll);
String instanceId = "";
String nextTaskId = "";
String nextUserIds = "";
List<ProcessTaskDTO> processTaskDTOS;
List<String> roleListNext = new ArrayList<>();
List<String> roleListAll = new ArrayList<>();
List<String> applyNoList = listResponseModel.getResult();
if (CollectionUtils.isEmpty(applyNoList)) {
return null;
}
// 判断当前是否为提交
List<WorkflowResultDto> workflowResultDtos = null;
if (SUBMIT_TYPE_FLOW.equals(submitType)) {
List<JgScrapCancelEq> JgScrapCancelEqList = getCancelEqs(noticeParams);
this.repeatUsedEquipCheck(JgScrapCancelEqList, reginParams.getCompany().getCompanyCode());
// 发起流程
ActWorkflowBatchDTO actWorkflowBatchDTO = new ActWorkflowBatchDTO();
List<ActWorkflowStartDTO> list = new ArrayList<>();
ActWorkflowStartDTO dto = new ActWorkflowStartDTO();
dto.setProcessDefinitionKey("scrapCancelNew");
dto.setBusinessKey(applyNoList.get(0));
dto.setCompleteFirstTask(Boolean.TRUE);
// 下一节点执行人单位(下节点接收机构code)
dto.setNextExecuteUserCompanyCode(model.getReceiveCompanyCode());
list.add(dto);
actWorkflowBatchDTO.setProcess(list);
processTaskDTOS = cmWorkflowService.startBatch(actWorkflowBatchDTO);
this.buildRoleList(processTaskDTOS, roleListNext, roleListAll);
instanceId = processTaskDTOS.get(0).getProcessInstance().getId();
nextTaskId = processTaskDTOS.get(0).getNextTask().get(0).getId();
taskName[0] = processTaskDTOS.get(0).getNextTask().get(0).getName();
workflowResultDtos = commonService.buildWorkFlowInfo(processTaskDTOS);
nextUserIds = workflowResultDtos.get(0).getNextExecutorUserIds();
this.buildRoleList(processTaskDTOS, roleListNext, roleListAll);
}
JgScrapCancel jgScrapCancel = new JgScrapCancel();
BeanUtils.copyProperties(model, jgScrapCancel);
String applyNo = applyNoList.get(0);
jgScrapCancel.setApplyNo(applyNo);
jgScrapCancel.setCreateDate(new Date());
jgScrapCancel.setNextExecuteIds(String.join(",", roleListNext));
jgScrapCancel.setInstanceStatus(String.join(",", roleListAll));
jgScrapCancel.setPromoter(reginParams.getUserModel().getUserId());
jgScrapCancel.setNextTaskId(Objects.isNull(workflowResultDtos) ? null : workflowResultDtos.get(0).getNextTaskId());
if (!StringUtils.isEmpty(instanceId)) {
jgScrapCancel.setInstanceId(instanceId);
jgScrapCancel.setNextTaskId(nextTaskId);
jgScrapCancel.setNextExecuteUserIds(nextUserIds);
jgScrapCancel.setAuditStatus(String.valueOf(WorkFlowStatusEnum.CANCEL_RECEIVE.getPass()));
} else {
jgScrapCancel.setAuditStatus(String.valueOf(WorkFlowStatusEnum.CANCEL_SUBMIT.getPass()));
}
jgScrapCancel.setUseUnitCode(reginParams.getCompany().getCompanyCode());
jgScrapCancel.setUseUnitName(reginParams.getCompany().getCompanyName());
jgScrapCancel.setCreateUserId(RequestContext.getExeUserId());
this.setUseRegisterInfo(jgScrapCancel, noticeParams);
this.save(jgScrapCancel);
// 新增代办
this.createTaskModel(jgScrapCancel, taskName[0], submitType, nextUserIds);
// 保存设备关系表
saveEquip(noticeParams, jgScrapCancel);
jgScrapCancel.setCancelTypeDesc(getRegistrationClass(jgScrapCancel.getCancelType()));
JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(noticeParams));
commonService.saveExecuteFlowData2Redis(instanceId, buildInstanceRuntimeData(jgScrapCancel));
String equListName = EquipmentClassifityEnum.getNameByCode(jsonObject.get("equListCode").toString());
save2HisData(jsonObject, jgScrapCancel.getSequenceNbr().toString());
JgScrapCancelDto dto = new JgScrapCancelDto();
BeanUtil.copyProperties(jgScrapCancel, dto);
dto.setEquListName(equListName);
return dto;
} catch (BadRequest | LocalBadRequest e) {
log.error(e.getMessage(), e);
this.rollBackForDelRedisData();
throw e;
} catch (Exception e) {
log.error(e.getMessage(), e);
this.rollBackForDelRedisData();
throw new BadRequest("保存失败!");
} finally {
FlowingEquipRedisContext.clean();
}
JgScrapCancel jgScrapCancel = new JgScrapCancel();
BeanUtils.copyProperties(model, jgScrapCancel);
String applyNo = applyNoList.get(0);
jgScrapCancel.setApplyNo(applyNo);
jgScrapCancel.setCreateDate(new Date());
jgScrapCancel.setNextExecuteIds(String.join(",", roleListNext));
jgScrapCancel.setInstanceStatus(String.join(",", roleListAll));
jgScrapCancel.setPromoter(reginParams.getUserModel().getUserId());
jgScrapCancel.setNextTaskId(Objects.isNull(workflowResultDtos) ? null : workflowResultDtos.get(0).getNextTaskId());
if (!StringUtils.isEmpty(instanceId)) {
jgScrapCancel.setInstanceId(instanceId);
jgScrapCancel.setNextTaskId(nextTaskId);
jgScrapCancel.setNextExecuteUserIds(nextUserIds);
jgScrapCancel.setAuditStatus(String.valueOf(WorkFlowStatusEnum.CANCEL_RECEIVE.getPass()));
}
private List<JgScrapCancelEq> getCancelEqs(Map<String, Object> noticeParams) {
List<JgScrapCancelEq> JgScrapCancelEqList = new ArrayList<>();
// 判断是否是报废气瓶业务处理
if (CancelTypeEnum.SCRAPPED.getCode().equals(noticeParams.get("cancelType")) &&
CylinderTypeEnum.CYLINDER.getCode().equals(noticeParams.get("EQU_CATEGORY_CODE"))) {
List<Map<String, Object>> list = (List<Map<String, Object>>) noticeParams.get("equipments");
for (Map<String, Object> equip : list) {
JgScrapCancelEq jgScrapCancelEq = new JgScrapCancelEq();
jgScrapCancelEq.setEquId(equip.get("SEQUENCE_NBR").toString());
JgScrapCancelEqList.add(jgScrapCancelEq);
}
} else {
jgScrapCancel.setAuditStatus(String.valueOf(WorkFlowStatusEnum.CANCEL_SUBMIT.getPass()));
List<Map<String, Object>> certificates;
// 证列表
if (CylinderTypeEnum.SPECIAL_CYLINDER.getCode().equals(noticeParams.get("EQU_CATEGORY_CODE"))) {
certificates = (List<Map<String, Object>>) noticeParams.get("cylCertificates");
} else {
certificates = (List<Map<String, Object>>) noticeParams.get("certificates");
}
// 使用登记证表idList
List<String> registrationIdList = certificates.stream().map(item -> item.get("sequenceNbr").toString()).collect(Collectors.toList());
List<JSONObject> equipmentList = jgUseRegistrationManageService.queryEquByCertificateSeqList(registrationIdList.stream().map(Long::parseLong).collect(Collectors.toList()));
for (JSONObject equip : equipmentList) {
JgScrapCancelEq jgScrapCancelEq = new JgScrapCancelEq();
jgScrapCancelEq.setEquId(equip.getString("SEQUENCE_NBR"));
JgScrapCancelEqList.add(jgScrapCancelEq);
}
}
jgScrapCancel.setUseUnitCode(reginParams.getCompany().getCompanyCode());
jgScrapCancel.setUseUnitName(reginParams.getCompany().getCompanyName());
jgScrapCancel.setCreateUserId(RequestContext.getExeUserId());
this.setUseRegisterInfo(jgScrapCancel, noticeParams);
this.save(jgScrapCancel);
// 新增代办
this.createTaskModel(jgScrapCancel, taskName[0], submitType, nextUserIds);
// 保存设备关系表
saveEquip(noticeParams, jgScrapCancel);
jgScrapCancel.setCancelTypeDesc(getRegistrationClass(jgScrapCancel.getCancelType()));
JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(noticeParams));
commonService.saveExecuteFlowData2Redis(instanceId, buildInstanceRuntimeData(jgScrapCancel));
String equListName = EquipmentClassifityEnum.getNameByCode(jsonObject.get("equListCode").toString());
save2HisData(jsonObject, jgScrapCancel.getSequenceNbr().toString());
JgScrapCancelDto dto = new JgScrapCancelDto();
BeanUtil.copyProperties(jgScrapCancel, dto);
dto.setEquListName(equListName);
return dto;
return JgScrapCancelEqList;
}
private void repeatUsedEquipCheck(List<JgScrapCancelEq> eqList, String companyCode) {
eqList.forEach(cancelEq -> EquipUsedCheckStrategyContext.getUsedStrategy(PAGE_KEY)
.registrationRepeatUsedCheck(cancelEq.getEquId(), companyCode));
}
/**
* 删除 redis校验重复引用设备的数据
*/
private void delRepeatUseEquipData(JgScrapCancel notice) {
if (NOT_FLOWING_STATE.contains(notice.getAuditStatus())) {
LambdaQueryWrapper<JgScrapCancelEq> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(JgScrapCancelEq::getEquipTransferId, notice.getSequenceNbr());
List<JgScrapCancelEq> noticeEqList = jgScrapCancelEqService.list(queryWrapper);
noticeEqList.forEach(noticeEq -> EquipUsedCheckStrategyContext.getUsedStrategy(PAGE_KEY)
.delDataForCheckEquipRepeatUsed(Collections.singletonList(noticeEq.getEquId()), notice.getUseUnitCode())
);
}
}
private void rollBackForDelRedisData() {
FlowingEquipRedisContext.getContext().forEach(
e -> EquipUsedCheckStrategyContext.getUsedStrategy(PAGE_KEY)
.delDataForCheckWithKey(e.getData(), e.getRedisKey()));
}
/**
......@@ -435,90 +510,106 @@ public class JgScrapCancelServiceImpl extends BaseService<JgScrapCancelDto, JgSc
@GlobalTransactional(rollbackFor = Exception.class)
public JgScrapCancelDto updateInfo(String submitType, JgScrapCancelDto jgScrapCancelDto, String op, JSONObject pageData) {
if (Objects.isNull(jgScrapCancelDto) || StringUtils.isEmpty(submitType)) {
throw new IllegalArgumentException("参数不能为空");
}
// 字段转换
this.convertField(jgScrapCancelDto);
List<String> roleListNext = new ArrayList<>();
List<String> roleListAll = new ArrayList<>();
if (SUBMIT_TYPE_FLOW.equals(submitType)) {
// 更新并提交
// 发起流程
if (!StringUtils.hasText(jgScrapCancelDto.getInstanceId())) {
// 未进流程直接发起并执行
List<ProcessTaskDTO> processTasks;
ActWorkflowBatchDTO actWorkflowBatchDTO = new ActWorkflowBatchDTO();
List<ActWorkflowStartDTO> list = new ArrayList<>();
ActWorkflowStartDTO dto = new ActWorkflowStartDTO();
dto.setProcessDefinitionKey("scrapCancelNew");
dto.setBusinessKey(jgScrapCancelDto.getApplyNo());
dto.setCompleteFirstTask(true);
dto.setNextExecuteUserCompanyCode(jgScrapCancelDto.getReceiveCompanyCode());
list.add(dto);
actWorkflowBatchDTO.setProcess(list);
processTasks = cmWorkflowService.startBatch(actWorkflowBatchDTO);
String instanceId = processTasks.get(0).getProcessInstance().getId();
String nextTaskId = processTasks.get(0).getNextTask().get(0).getId();
String taskName = processTasks.get(0).getNextTask().get(0).getName();
this.buildRoleList(processTasks, roleListNext, roleListAll);
List<WorkflowResultDto> workflowResultDtos = commonService.buildWorkFlowInfo(processTasks);
String nextUserIds = workflowResultDtos.get(0).getNextExecutorUserIds();
jgScrapCancelDto.setInstanceStatus(String.join(",", roleListAll));
jgScrapCancelDto.setInstanceId(instanceId);
jgScrapCancelDto.setNextExecuteIds(String.join(",", roleListNext));
jgScrapCancelDto.setNextTaskId(nextTaskId);
jgScrapCancelDto.setNextExecuteUserIds(nextUserIds);
jgScrapCancelDto.setAuditStatus(WorkFlowStatusEnum.CANCEL_RECEIVE.getPass());
// 创建待办
JgScrapCancel bean = new JgScrapCancel();
BeanUtil.copyProperties(jgScrapCancelDto, bean);
commonService.deleteTasksByRelationId(String.valueOf(jgScrapCancelDto.getSequenceNbr()));
createTaskModel(bean, taskName, "1", nextUserIds);
} else {
// 已经在流程中,执行一步
ProcessTaskDTO processTaskDTO = submit(jgScrapCancelDto);
String nextTaskId = processTaskDTO.getNextTask().get(0).getId();
String taskName = processTaskDTO.getNextTask().get(0).getName();
this.buildRoleList(Collections.singletonList(processTaskDTO), roleListNext, roleListAll);
List<WorkflowResultDto> workflowResultDtos = commonService.buildWorkFlowInfo(Collections.singletonList(processTaskDTO));
String nextUserIds = workflowResultDtos.get(0).getNextExecutorUserIds();
// 查询下节点任务
if (!ObjectUtils.isEmpty(jgScrapCancelDto.getInstanceStatus())) {
jgScrapCancelDto.setInstanceStatus(jgScrapCancelDto.getInstanceStatus() + "," + String.join("", roleListNext));
} else {
try {
if (Objects.isNull(jgScrapCancelDto) || StringUtils.isEmpty(submitType)) {
throw new IllegalArgumentException("参数不能为空");
}
// 字段转换
this.convertField(jgScrapCancelDto);
List<String> roleListNext = new ArrayList<>();
List<String> roleListAll = new ArrayList<>();
if (SUBMIT_TYPE_FLOW.equals(submitType)) {
ReginParams reginParams = JSONObject.parseObject(redisUtils.get(RedisKey.buildReginKey(RequestContext.getExeUserId(), RequestContext.getToken())).toString(), ReginParams.class);
List<JgScrapCancelEq> JgScrapCancelEqList = getCancelEqs(pageData);
this.repeatUsedEquipCheck(JgScrapCancelEqList, reginParams.getCompany().getCompanyCode());
// 更新并提交
// 发起流程
if (!StringUtils.hasText(jgScrapCancelDto.getInstanceId())) {
// 未进流程直接发起并执行
List<ProcessTaskDTO> processTasks;
ActWorkflowBatchDTO actWorkflowBatchDTO = new ActWorkflowBatchDTO();
List<ActWorkflowStartDTO> list = new ArrayList<>();
ActWorkflowStartDTO dto = new ActWorkflowStartDTO();
dto.setProcessDefinitionKey("scrapCancelNew");
dto.setBusinessKey(jgScrapCancelDto.getApplyNo());
dto.setCompleteFirstTask(true);
dto.setNextExecuteUserCompanyCode(jgScrapCancelDto.getReceiveCompanyCode());
list.add(dto);
actWorkflowBatchDTO.setProcess(list);
processTasks = cmWorkflowService.startBatch(actWorkflowBatchDTO);
String instanceId = processTasks.get(0).getProcessInstance().getId();
String nextTaskId = processTasks.get(0).getNextTask().get(0).getId();
String taskName = processTasks.get(0).getNextTask().get(0).getName();
this.buildRoleList(processTasks, roleListNext, roleListAll);
List<WorkflowResultDto> workflowResultDtos = commonService.buildWorkFlowInfo(processTasks);
String nextUserIds = workflowResultDtos.get(0).getNextExecutorUserIds();
jgScrapCancelDto.setInstanceStatus(String.join(",", roleListAll));
jgScrapCancelDto.setInstanceId(instanceId);
jgScrapCancelDto.setNextExecuteIds(String.join(",", roleListNext));
jgScrapCancelDto.setNextTaskId(nextTaskId);
jgScrapCancelDto.setNextExecuteUserIds(nextUserIds);
jgScrapCancelDto.setAuditStatus(WorkFlowStatusEnum.CANCEL_RECEIVE.getPass());
// 创建待办
JgScrapCancel bean = new JgScrapCancel();
BeanUtil.copyProperties(jgScrapCancelDto, bean);
commonService.deleteTasksByRelationId(String.valueOf(jgScrapCancelDto.getSequenceNbr()));
createTaskModel(bean, taskName, "1", nextUserIds);
} else {
// 已经在流程中,执行一步
ProcessTaskDTO processTaskDTO = submit(jgScrapCancelDto);
String nextTaskId = processTaskDTO.getNextTask().get(0).getId();
String taskName = processTaskDTO.getNextTask().get(0).getName();
this.buildRoleList(Collections.singletonList(processTaskDTO), roleListNext, roleListAll);
List<WorkflowResultDto> workflowResultDtos = commonService.buildWorkFlowInfo(Collections.singletonList(processTaskDTO));
String nextUserIds = workflowResultDtos.get(0).getNextExecutorUserIds();
// 查询下节点任务
if (!ObjectUtils.isEmpty(jgScrapCancelDto.getInstanceStatus())) {
jgScrapCancelDto.setInstanceStatus(jgScrapCancelDto.getInstanceStatus() + "," + String.join("", roleListNext));
} else {
jgScrapCancelDto.setInstanceStatus(String.join(",", roleListAll));
}
jgScrapCancelDto.setPromoter(RequestContext.getExeUserId());
jgScrapCancelDto.setNextExecuteIds(String.join(",", roleListNext));
jgScrapCancelDto.setAuditStatus(String.valueOf(WorkFlowStatusEnum.CANCEL_RECEIVE.getPass()));
jgScrapCancelDto.setNextTaskId(nextTaskId);
// 更新下一步可执行人
jgScrapCancelDto.setNextExecuteUserIds(nextUserIds);
JgScrapCancel jgScrapCancel = new JgScrapCancel();
BeanUtils.copyProperties(jgScrapCancelDto, jgScrapCancel);
updateTaskModel(jgScrapCancelDto, "0");
createTaskModel(jgScrapCancel, taskName, "1", nextUserIds);
}
jgScrapCancelDto.setPromoter(RequestContext.getExeUserId());
jgScrapCancelDto.setNextExecuteIds(String.join(",", roleListNext));
jgScrapCancelDto.setAuditStatus(String.valueOf(WorkFlowStatusEnum.CANCEL_RECEIVE.getPass()));
jgScrapCancelDto.setNextTaskId(nextTaskId);
// 更新下一步可执行人
jgScrapCancelDto.setNextExecuteUserIds(nextUserIds);
JgScrapCancel cancel = new JgScrapCancel();
BeanUtils.copyProperties(jgScrapCancelDto, cancel);
this.setUseRegisterInfo(cancel, new HashMap<>(pageData));
this.updateById(cancel);
JgScrapCancel jgScrapCancel = new JgScrapCancel();
BeanUtils.copyProperties(jgScrapCancelDto, jgScrapCancel);
updateTaskModel(jgScrapCancelDto, "0");
createTaskModel(jgScrapCancel, taskName, "1", nextUserIds);
}
JgScrapCancel cancel = new JgScrapCancel();
BeanUtils.copyProperties(jgScrapCancelDto, cancel);
this.setUseRegisterInfo(cancel, new HashMap<>(pageData));
this.updateById(cancel);
JgScrapCancel jgScrapCancel = new JgScrapCancel();
BeanUtils.copyProperties(jgScrapCancelDto, jgScrapCancel, "useUnitName", "useUnitName");
this.insertJgScrapCancelEqAfterDelete(jgScrapCancel, pageData);
commonService.saveExecuteFlowData2Redis(jgScrapCancel.getInstanceId(), buildInstanceRuntimeData(jgScrapCancel));
} else {
// 更新操作
JgScrapCancel bean = new JgScrapCancel();
BeanUtils.copyProperties(jgScrapCancelDto, bean);
bean.setCancelCertificate(JSON.toJSONString(jgScrapCancelDto.getCancelCertificateList()));
this.setUseRegisterInfo(bean, new HashMap<>(pageData));
this.updateById(bean);
this.insertJgScrapCancelEqAfterDelete(bean, pageData);
BeanUtils.copyProperties(jgScrapCancelDto, jgScrapCancel, "useUnitName", "useUnitName");
this.insertJgScrapCancelEqAfterDelete(jgScrapCancel, pageData);
commonService.saveExecuteFlowData2Redis(jgScrapCancel.getInstanceId(), buildInstanceRuntimeData(jgScrapCancel));
} else {
// 更新操作
JgScrapCancel bean = new JgScrapCancel();
BeanUtils.copyProperties(jgScrapCancelDto, bean);
bean.setCancelCertificate(JSON.toJSONString(jgScrapCancelDto.getCancelCertificateList()));
this.setUseRegisterInfo(bean, new HashMap<>(pageData));
this.updateById(bean);
this.insertJgScrapCancelEqAfterDelete(bean, pageData);
}
commonService.saveOrUpdateHistory(getRegistrationClass(jgScrapCancelDto.getCancelType()), pageData, "", jgScrapCancelDto.getSequenceNbr().toString());
return jgScrapCancelDto;
} catch (BadRequest | LocalBadRequest e) {
log.error(e.getMessage(), e);
this.rollBackForDelRedisData();
throw e;
} catch (Exception e) {
log.error(e.getMessage(), e);
this.rollBackForDelRedisData();
throw new BadRequest("保存失败!");
} finally {
FlowingEquipRedisContext.clean();
}
commonService.saveOrUpdateHistory(getRegistrationClass(jgScrapCancelDto.getCancelType()), pageData, "", jgScrapCancelDto.getSequenceNbr().toString());
return jgScrapCancelDto;
}
private void insertJgScrapCancelEqAfterDelete(JgScrapCancel jgScrapCancel, JSONObject pageData) {
......@@ -723,6 +814,7 @@ public class JgScrapCancelServiceImpl extends BaseService<JgScrapCancelDto, JgSc
// redis流程实时数据更新
commonService.saveExecuteFlowData2Redis(instanceId, this.buildInstanceRuntimeData(jgScrapCancel));
this.delRepeatUseEquipData(jgScrapCancel);
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
......@@ -780,6 +872,7 @@ public class JgScrapCancelServiceImpl extends BaseService<JgScrapCancelDto, JgSc
// redis流程实时数据更新
commonService.saveExecuteFlowData2Redis(instanceId, this.buildInstanceRuntimeData(jgScrapCancel));
this.delRepeatUseEquipData(jgScrapCancel);
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
......
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