Commit caab6266 authored by 王果's avatar 王果

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

parent 41e16c4c
...@@ -3,6 +3,7 @@ package com.yeejoin.amos.boot.module.jg.api.mapper; ...@@ -3,6 +3,7 @@ package com.yeejoin.amos.boot.module.jg.api.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.module.common.api.dto.DPFilterParamDto; 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.EquipBizCountDto;
import com.yeejoin.amos.boot.module.jg.api.dto.JgScrapCancelDto; import com.yeejoin.amos.boot.module.jg.api.dto.JgScrapCancelDto;
import com.yeejoin.amos.boot.module.jg.api.entity.JgScrapCancel; import com.yeejoin.amos.boot.module.jg.api.entity.JgScrapCancel;
...@@ -48,4 +49,6 @@ public interface JgScrapCancelMapper extends BaseMapper<JgScrapCancel> { ...@@ -48,4 +49,6 @@ public interface JgScrapCancelMapper extends BaseMapper<JgScrapCancel> {
List<EquipBizCountDto> queryScrappedDeviceStaticListData(DPFilterParamDto dpFilterParamDto); List<EquipBizCountDto> queryScrappedDeviceStaticListData(DPFilterParamDto dpFilterParamDto);
Integer getScrappedDeviceCount(@Param("dpFilterParamDto") DPFilterParamDto dpFilterParamDto); Integer getScrappedDeviceCount(@Param("dpFilterParamDto") DPFilterParamDto dpFilterParamDto);
List<CompanyEquipCountDto> queryForFlowingEquipList();
} }
...@@ -281,4 +281,13 @@ ...@@ -281,4 +281,13 @@
c.equ_category c.equ_category
</select> </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> </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; ...@@ -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.mapper.JgUseRegistrationManageMapper;
import com.yeejoin.amos.boot.module.jg.api.service.IJgScrapCancelService; 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.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.feign.TzsServiceFeignClient;
import com.yeejoin.amos.boot.module.jg.biz.service.IIdxBizJgRegisterInfoService; import com.yeejoin.amos.boot.module.jg.biz.service.IIdxBizJgRegisterInfoService;
import com.yeejoin.amos.boot.module.jg.flc.api.fegin.WorkFlowFeignService; import com.yeejoin.amos.boot.module.jg.flc.api.fegin.WorkFlowFeignService;
...@@ -71,6 +74,8 @@ public class JgScrapCancelServiceImpl extends BaseService<JgScrapCancelDto, JgSc ...@@ -71,6 +74,8 @@ public class JgScrapCancelServiceImpl extends BaseService<JgScrapCancelDto, JgSc
private static final String SUBMIT_TYPE_FLOW = "1"; private static final String SUBMIT_TYPE_FLOW = "1";
private static final String PAGE_KEY = "jgScrapCancelAdd"; private static final String PAGE_KEY = "jgScrapCancelAdd";
private static final String template = "%s发起%s%s业务申请,【申请单号:%s】"; private static final String template = "%s发起%s%s业务申请,【申请单号:%s】";
private final List<String> NOT_FLOWING_STATE = Arrays.asList("使用单位待提交", "一级受理已驳回", "使用单位已撤回", "已作废", "已完成");
@Autowired @Autowired
WorkFlowFeignService workFlowFeginService; WorkFlowFeignService workFlowFeginService;
@Autowired @Autowired
...@@ -178,94 +183,164 @@ public class JgScrapCancelServiceImpl extends BaseService<JgScrapCancelDto, JgSc ...@@ -178,94 +183,164 @@ public class JgScrapCancelServiceImpl extends BaseService<JgScrapCancelDto, JgSc
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@GlobalTransactional(rollbackFor = Exception.class) @GlobalTransactional(rollbackFor = Exception.class)
public JgScrapCancelDto save(String submitType, Map<String, Object> mapParams) { public JgScrapCancelDto save(String submitType, Map<String, Object> mapParams) {
ReginParams reginParams = this.getSelectedOrgInfo(); try {
Map<String, Object> noticeParams = (Map) mapParams.get(PAGE_KEY); ReginParams reginParams = this.getSelectedOrgInfo();
String[] receiveOrg = String.valueOf(noticeParams.get("receiveOrgCreditCode")).split("_"); Map<String, Object> noticeParams = (Map) mapParams.get(PAGE_KEY);
noticeParams.remove("record"); String[] receiveOrg = String.valueOf(noticeParams.get("receiveOrgCreditCode")).split("_");
String[] taskName = new String[]{"流程结束"}; noticeParams.remove("record");
JgScrapCancelDto model = JSON.parseObject(JSON.toJSONString(noticeParams), JgScrapCancelDto.class); String[] taskName = new String[]{"流程结束"};
model.setReceiveOrgCode(receiveOrg[0]); JgScrapCancelDto model = JSON.parseObject(JSON.toJSONString(noticeParams), JgScrapCancelDto.class);
model.setReceiveCompanyCode(receiveOrg[0]); model.setReceiveOrgCode(receiveOrg[0]);
model.setReceiveOrgName(receiveOrg[1]); model.setReceiveCompanyCode(receiveOrg[0]);
// 字段转换 model.setReceiveOrgName(receiveOrg[1]);
convertField(model); // 字段转换
// 获取告知单号 调整之前YZBF为ZX, convertField(model);
ResponseModel<List<String>> listResponseModel = tzsServiceFeignClient.applicationFormCode(ApplicationFormTypeEnum.getCode.get(String.valueOf(noticeParams.get("businessCode"))), 1); // 获取告知单号 调整之前YZBF为ZX,
if (!ObjectUtils.isEmpty(listResponseModel) && listResponseModel.getStatus() != HttpStatus.OK.value()) { ResponseModel<List<String>> listResponseModel = tzsServiceFeignClient.applicationFormCode(ApplicationFormTypeEnum.getCode.get(String.valueOf(noticeParams.get("businessCode"))), 1);
log.error(" 获取告知单号失败"); if (!ObjectUtils.isEmpty(listResponseModel) && listResponseModel.getStatus() != HttpStatus.OK.value()) {
throw new BadRequest("获取告知单号失败"); log.error(" 获取告知单号失败");
} throw new BadRequest("获取告知单号失败");
}
String instanceId = ""; String instanceId = "";
String nextTaskId = ""; String nextTaskId = "";
String nextUserIds = ""; String nextUserIds = "";
List<ProcessTaskDTO> processTaskDTOS; List<ProcessTaskDTO> processTaskDTOS;
List<String> roleListNext = new ArrayList<>(); List<String> roleListNext = new ArrayList<>();
List<String> roleListAll = new ArrayList<>(); List<String> roleListAll = new ArrayList<>();
List<String> applyNoList = listResponseModel.getResult(); List<String> applyNoList = listResponseModel.getResult();
if (CollectionUtils.isEmpty(applyNoList)) { if (CollectionUtils.isEmpty(applyNoList)) {
return null; return null;
} }
// 判断当前是否为提交 // 判断当前是否为提交
List<WorkflowResultDto> workflowResultDtos = null; List<WorkflowResultDto> workflowResultDtos = null;
if (SUBMIT_TYPE_FLOW.equals(submitType)) { if (SUBMIT_TYPE_FLOW.equals(submitType)) {
// 发起流程 List<JgScrapCancelEq> JgScrapCancelEqList = getCancelEqs(noticeParams);
ActWorkflowBatchDTO actWorkflowBatchDTO = new ActWorkflowBatchDTO(); this.repeatUsedEquipCheck(JgScrapCancelEqList, reginParams.getCompany().getCompanyCode());
List<ActWorkflowStartDTO> list = new ArrayList<>(); // 发起流程
ActWorkflowBatchDTO actWorkflowBatchDTO = new ActWorkflowBatchDTO();
ActWorkflowStartDTO dto = new ActWorkflowStartDTO(); List<ActWorkflowStartDTO> list = new ArrayList<>();
dto.setProcessDefinitionKey("scrapCancelNew");
dto.setBusinessKey(applyNoList.get(0)); ActWorkflowStartDTO dto = new ActWorkflowStartDTO();
dto.setCompleteFirstTask(Boolean.TRUE); dto.setProcessDefinitionKey("scrapCancelNew");
// 下一节点执行人单位(下节点接收机构code) dto.setBusinessKey(applyNoList.get(0));
dto.setNextExecuteUserCompanyCode(model.getReceiveCompanyCode()); dto.setCompleteFirstTask(Boolean.TRUE);
list.add(dto); // 下一节点执行人单位(下节点接收机构code)
dto.setNextExecuteUserCompanyCode(model.getReceiveCompanyCode());
actWorkflowBatchDTO.setProcess(list); list.add(dto);
processTaskDTOS = cmWorkflowService.startBatch(actWorkflowBatchDTO);
this.buildRoleList(processTaskDTOS, roleListNext, roleListAll); actWorkflowBatchDTO.setProcess(list);
instanceId = processTaskDTOS.get(0).getProcessInstance().getId(); processTaskDTOS = cmWorkflowService.startBatch(actWorkflowBatchDTO);
nextTaskId = processTaskDTOS.get(0).getNextTask().get(0).getId(); this.buildRoleList(processTaskDTOS, roleListNext, roleListAll);
taskName[0] = processTaskDTOS.get(0).getNextTask().get(0).getName(); instanceId = processTaskDTOS.get(0).getProcessInstance().getId();
workflowResultDtos = commonService.buildWorkFlowInfo(processTaskDTOS); nextTaskId = processTaskDTOS.get(0).getNextTask().get(0).getId();
nextUserIds = workflowResultDtos.get(0).getNextExecutorUserIds(); taskName[0] = processTaskDTOS.get(0).getNextTask().get(0).getName();
this.buildRoleList(processTaskDTOS, roleListNext, roleListAll); 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); private List<JgScrapCancelEq> getCancelEqs(Map<String, Object> noticeParams) {
jgScrapCancel.setApplyNo(applyNo); List<JgScrapCancelEq> JgScrapCancelEqList = new ArrayList<>();
jgScrapCancel.setCreateDate(new Date()); // 判断是否是报废气瓶业务处理
jgScrapCancel.setNextExecuteIds(String.join(",", roleListNext)); if (CancelTypeEnum.SCRAPPED.getCode().equals(noticeParams.get("cancelType")) &&
jgScrapCancel.setInstanceStatus(String.join(",", roleListAll)); CylinderTypeEnum.CYLINDER.getCode().equals(noticeParams.get("EQU_CATEGORY_CODE"))) {
jgScrapCancel.setPromoter(reginParams.getUserModel().getUserId()); List<Map<String, Object>> list = (List<Map<String, Object>>) noticeParams.get("equipments");
jgScrapCancel.setNextTaskId(Objects.isNull(workflowResultDtos) ? null : workflowResultDtos.get(0).getNextTaskId()); for (Map<String, Object> equip : list) {
if (!StringUtils.isEmpty(instanceId)) { JgScrapCancelEq jgScrapCancelEq = new JgScrapCancelEq();
jgScrapCancel.setInstanceId(instanceId); jgScrapCancelEq.setEquId(equip.get("SEQUENCE_NBR").toString());
jgScrapCancel.setNextTaskId(nextTaskId); JgScrapCancelEqList.add(jgScrapCancelEq);
jgScrapCancel.setNextExecuteUserIds(nextUserIds); }
jgScrapCancel.setAuditStatus(String.valueOf(WorkFlowStatusEnum.CANCEL_RECEIVE.getPass()));
} else { } 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()); return JgScrapCancelEqList;
jgScrapCancel.setUseUnitName(reginParams.getCompany().getCompanyName()); }
jgScrapCancel.setCreateUserId(RequestContext.getExeUserId());
this.setUseRegisterInfo(jgScrapCancel, noticeParams); private void repeatUsedEquipCheck(List<JgScrapCancelEq> eqList, String companyCode) {
this.save(jgScrapCancel); eqList.forEach(cancelEq -> EquipUsedCheckStrategyContext.getUsedStrategy(PAGE_KEY)
// 新增代办 .registrationRepeatUsedCheck(cancelEq.getEquId(), companyCode));
this.createTaskModel(jgScrapCancel, taskName[0], submitType, nextUserIds); }
// 保存设备关系表
saveEquip(noticeParams, jgScrapCancel); /**
jgScrapCancel.setCancelTypeDesc(getRegistrationClass(jgScrapCancel.getCancelType())); * 删除 redis校验重复引用设备的数据
JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(noticeParams)); */
commonService.saveExecuteFlowData2Redis(instanceId, buildInstanceRuntimeData(jgScrapCancel)); private void delRepeatUseEquipData(JgScrapCancel notice) {
String equListName = EquipmentClassifityEnum.getNameByCode(jsonObject.get("equListCode").toString()); if (NOT_FLOWING_STATE.contains(notice.getAuditStatus())) {
save2HisData(jsonObject, jgScrapCancel.getSequenceNbr().toString()); LambdaQueryWrapper<JgScrapCancelEq> queryWrapper = new LambdaQueryWrapper<>();
JgScrapCancelDto dto = new JgScrapCancelDto(); queryWrapper.eq(JgScrapCancelEq::getEquipTransferId, notice.getSequenceNbr());
BeanUtil.copyProperties(jgScrapCancel, dto); List<JgScrapCancelEq> noticeEqList = jgScrapCancelEqService.list(queryWrapper);
dto.setEquListName(equListName); noticeEqList.forEach(noticeEq -> EquipUsedCheckStrategyContext.getUsedStrategy(PAGE_KEY)
return dto; .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 ...@@ -435,90 +510,106 @@ public class JgScrapCancelServiceImpl extends BaseService<JgScrapCancelDto, JgSc
@GlobalTransactional(rollbackFor = Exception.class) @GlobalTransactional(rollbackFor = Exception.class)
public JgScrapCancelDto updateInfo(String submitType, JgScrapCancelDto jgScrapCancelDto, String op, JSONObject pageData) { public JgScrapCancelDto updateInfo(String submitType, JgScrapCancelDto jgScrapCancelDto, String op, JSONObject pageData) {
if (Objects.isNull(jgScrapCancelDto) || StringUtils.isEmpty(submitType)) { try {
throw new IllegalArgumentException("参数不能为空");
} if (Objects.isNull(jgScrapCancelDto) || StringUtils.isEmpty(submitType)) {
// 字段转换 throw new IllegalArgumentException("参数不能为空");
this.convertField(jgScrapCancelDto); }
List<String> roleListNext = new ArrayList<>(); // 字段转换
List<String> roleListAll = new ArrayList<>(); this.convertField(jgScrapCancelDto);
if (SUBMIT_TYPE_FLOW.equals(submitType)) { List<String> roleListNext = new ArrayList<>();
// 更新并提交 List<String> roleListAll = new ArrayList<>();
// 发起流程 if (SUBMIT_TYPE_FLOW.equals(submitType)) {
if (!StringUtils.hasText(jgScrapCancelDto.getInstanceId())) { ReginParams reginParams = JSONObject.parseObject(redisUtils.get(RedisKey.buildReginKey(RequestContext.getExeUserId(), RequestContext.getToken())).toString(), ReginParams.class);
// 未进流程直接发起并执行 List<JgScrapCancelEq> JgScrapCancelEqList = getCancelEqs(pageData);
List<ProcessTaskDTO> processTasks; this.repeatUsedEquipCheck(JgScrapCancelEqList, reginParams.getCompany().getCompanyCode());
ActWorkflowBatchDTO actWorkflowBatchDTO = new ActWorkflowBatchDTO(); // 更新并提交
List<ActWorkflowStartDTO> list = new ArrayList<>(); // 发起流程
ActWorkflowStartDTO dto = new ActWorkflowStartDTO(); if (!StringUtils.hasText(jgScrapCancelDto.getInstanceId())) {
dto.setProcessDefinitionKey("scrapCancelNew"); // 未进流程直接发起并执行
dto.setBusinessKey(jgScrapCancelDto.getApplyNo()); List<ProcessTaskDTO> processTasks;
dto.setCompleteFirstTask(true); ActWorkflowBatchDTO actWorkflowBatchDTO = new ActWorkflowBatchDTO();
dto.setNextExecuteUserCompanyCode(jgScrapCancelDto.getReceiveCompanyCode()); List<ActWorkflowStartDTO> list = new ArrayList<>();
list.add(dto); ActWorkflowStartDTO dto = new ActWorkflowStartDTO();
actWorkflowBatchDTO.setProcess(list); dto.setProcessDefinitionKey("scrapCancelNew");
processTasks = cmWorkflowService.startBatch(actWorkflowBatchDTO); dto.setBusinessKey(jgScrapCancelDto.getApplyNo());
String instanceId = processTasks.get(0).getProcessInstance().getId(); dto.setCompleteFirstTask(true);
String nextTaskId = processTasks.get(0).getNextTask().get(0).getId(); dto.setNextExecuteUserCompanyCode(jgScrapCancelDto.getReceiveCompanyCode());
String taskName = processTasks.get(0).getNextTask().get(0).getName(); list.add(dto);
this.buildRoleList(processTasks, roleListNext, roleListAll); actWorkflowBatchDTO.setProcess(list);
List<WorkflowResultDto> workflowResultDtos = commonService.buildWorkFlowInfo(processTasks); processTasks = cmWorkflowService.startBatch(actWorkflowBatchDTO);
String nextUserIds = workflowResultDtos.get(0).getNextExecutorUserIds(); String instanceId = processTasks.get(0).getProcessInstance().getId();
jgScrapCancelDto.setInstanceStatus(String.join(",", roleListAll)); String nextTaskId = processTasks.get(0).getNextTask().get(0).getId();
jgScrapCancelDto.setInstanceId(instanceId); String taskName = processTasks.get(0).getNextTask().get(0).getName();
jgScrapCancelDto.setNextExecuteIds(String.join(",", roleListNext)); this.buildRoleList(processTasks, roleListNext, roleListAll);
jgScrapCancelDto.setNextTaskId(nextTaskId); List<WorkflowResultDto> workflowResultDtos = commonService.buildWorkFlowInfo(processTasks);
jgScrapCancelDto.setNextExecuteUserIds(nextUserIds); String nextUserIds = workflowResultDtos.get(0).getNextExecutorUserIds();
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.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()); JgScrapCancel cancel = new JgScrapCancel();
jgScrapCancelDto.setNextExecuteIds(String.join(",", roleListNext)); BeanUtils.copyProperties(jgScrapCancelDto, cancel);
jgScrapCancelDto.setAuditStatus(String.valueOf(WorkFlowStatusEnum.CANCEL_RECEIVE.getPass())); this.setUseRegisterInfo(cancel, new HashMap<>(pageData));
jgScrapCancelDto.setNextTaskId(nextTaskId); this.updateById(cancel);
// 更新下一步可执行人
jgScrapCancelDto.setNextExecuteUserIds(nextUserIds);
JgScrapCancel jgScrapCancel = new JgScrapCancel(); JgScrapCancel jgScrapCancel = new JgScrapCancel();
BeanUtils.copyProperties(jgScrapCancelDto, jgScrapCancel); BeanUtils.copyProperties(jgScrapCancelDto, jgScrapCancel, "useUnitName", "useUnitName");
updateTaskModel(jgScrapCancelDto, "0"); this.insertJgScrapCancelEqAfterDelete(jgScrapCancel, pageData);
createTaskModel(jgScrapCancel, taskName, "1", nextUserIds); commonService.saveExecuteFlowData2Redis(jgScrapCancel.getInstanceId(), buildInstanceRuntimeData(jgScrapCancel));
} } else {
JgScrapCancel cancel = new JgScrapCancel(); // 更新操作
BeanUtils.copyProperties(jgScrapCancelDto, cancel); JgScrapCancel bean = new JgScrapCancel();
this.setUseRegisterInfo(cancel, new HashMap<>(pageData)); BeanUtils.copyProperties(jgScrapCancelDto, bean);
this.updateById(cancel); bean.setCancelCertificate(JSON.toJSONString(jgScrapCancelDto.getCancelCertificateList()));
JgScrapCancel jgScrapCancel = new JgScrapCancel(); this.setUseRegisterInfo(bean, new HashMap<>(pageData));
BeanUtils.copyProperties(jgScrapCancelDto, jgScrapCancel, "useUnitName", "useUnitName"); this.updateById(bean);
this.insertJgScrapCancelEqAfterDelete(jgScrapCancel, pageData); this.insertJgScrapCancelEqAfterDelete(bean, pageData);
commonService.saveExecuteFlowData2Redis(jgScrapCancel.getInstanceId(), buildInstanceRuntimeData(jgScrapCancel)); }
} else { commonService.saveOrUpdateHistory(getRegistrationClass(jgScrapCancelDto.getCancelType()), pageData, "", jgScrapCancelDto.getSequenceNbr().toString());
// 更新操作 return jgScrapCancelDto;
JgScrapCancel bean = new JgScrapCancel(); } catch (BadRequest | LocalBadRequest e) {
BeanUtils.copyProperties(jgScrapCancelDto, bean); log.error(e.getMessage(), e);
bean.setCancelCertificate(JSON.toJSONString(jgScrapCancelDto.getCancelCertificateList())); this.rollBackForDelRedisData();
this.setUseRegisterInfo(bean, new HashMap<>(pageData)); throw e;
this.updateById(bean); } catch (Exception e) {
this.insertJgScrapCancelEqAfterDelete(bean, pageData); 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) { private void insertJgScrapCancelEqAfterDelete(JgScrapCancel jgScrapCancel, JSONObject pageData) {
...@@ -723,6 +814,7 @@ public class JgScrapCancelServiceImpl extends BaseService<JgScrapCancelDto, JgSc ...@@ -723,6 +814,7 @@ public class JgScrapCancelServiceImpl extends BaseService<JgScrapCancelDto, JgSc
// redis流程实时数据更新 // redis流程实时数据更新
commonService.saveExecuteFlowData2Redis(instanceId, this.buildInstanceRuntimeData(jgScrapCancel)); commonService.saveExecuteFlowData2Redis(instanceId, this.buildInstanceRuntimeData(jgScrapCancel));
this.delRepeatUseEquipData(jgScrapCancel);
} catch (InterruptedException e) { } catch (InterruptedException e) {
e.printStackTrace(); e.printStackTrace();
} finally { } finally {
...@@ -780,6 +872,7 @@ public class JgScrapCancelServiceImpl extends BaseService<JgScrapCancelDto, JgSc ...@@ -780,6 +872,7 @@ public class JgScrapCancelServiceImpl extends BaseService<JgScrapCancelDto, JgSc
// redis流程实时数据更新 // redis流程实时数据更新
commonService.saveExecuteFlowData2Redis(instanceId, this.buildInstanceRuntimeData(jgScrapCancel)); commonService.saveExecuteFlowData2Redis(instanceId, this.buildInstanceRuntimeData(jgScrapCancel));
this.delRepeatUseEquipData(jgScrapCancel);
} catch (InterruptedException e) { } catch (InterruptedException e) {
e.printStackTrace(); e.printStackTrace();
} finally { } 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