克隆及任务代办列表修改

This commit is contained in:
zhangheng 2024-08-12 14:30:48 +08:00
parent e961cd5ae5
commit 257830f5ca

View File

@ -402,4 +402,127 @@ public class SpecialDiseaseRouteServiceImpl implements ISpecialDiseaseRouteServi
});
return manageNodeAuditList;
}
/**
* 克隆节点路径
*
* @param id 路径id
* @return AjaxResult
*/
@Transactional(rollbackFor = Exception.class)
@Override
public AjaxResult cloneRoute(Long id) {
//主路径
SpecialDiseaseRoute specialDiseaseRoute = specialDiseaseRouteMapper.selectSpecialDiseaseRouteById(id);
specialDiseaseRoute.setId(null);
specialDiseaseRoute.setRouteCode(Constants.ROUTE_CODE + generateSystemCodeUtil.generateSystemCode(Constants.ROUTE_CODE));
specialDiseaseRoute.setRouteName(specialDiseaseRoute.getRouteName() + "-副本");
specialDiseaseRoute.setCreateBy(SecurityUtils.getUsername());
specialDiseaseRoute.setReleaseStatus(ReleaseStatusEnum.UNPUBLISHED.getInfo());
specialDiseaseRoute.setCreateTime(LocalDateTime.now());
//判断名称重复
extracted(specialDiseaseRoute);
int routeCount = specialDiseaseRouteMapper.insertSpecialDiseaseRoute(specialDiseaseRoute);
if (routeCount <= 0) {
log.info("新增主路径失败!");
throw new ServiceException("克隆失败!");
}
//子路径查询新增
List<Long> specialDiseaseRouteIds = new ArrayList<>();
List<OriginalSpecialDiseaseRoute> childSpecialDiseaseRoute = specialDiseaseRouteMapper.getChildSpecialDiseaseRoute(id);
if (CollectionUtils.isNotEmpty(childSpecialDiseaseRoute)) {
specialDiseaseRouteIds = childSpecialDiseaseRoute.stream().filter(Objects::nonNull).map(SpecialDiseaseRoute::getId).filter(Objects::nonNull).collect(Collectors.toList());
childSpecialDiseaseRoute.forEach(item -> {
item.setParentRouteId(specialDiseaseRoute.getId());
item.setRouteCode(Constants.ROUTE_CODE + generateSystemCodeUtil.generateSystemCode(Constants.ROUTE_CODE));
item.setReleaseStatus(ReleaseStatusEnum.UNPUBLISHED.getInfo());
item.setCreateBy(SecurityUtils.getUsername());
item.setCreateTime(LocalDateTime.now());
});
int childCount = specialDiseaseRouteMapper.insertSpecialDiseaseRouteList(childSpecialDiseaseRoute);
if (childCount <= 0) {
log.info("新增子路径失败!");
throw new ServiceException("克隆失败!");
}
}
//主路径节点
List<SpecialDiseaseNodeVO> specialDiseaseNodeList = new ArrayList<>();
specialDiseaseRouteIds.add(id);
List<SpecialDiseaseNode> specialDiseaseNodes = specialDiseaseNodeMapper.selectSpecialDiseaseNodes(specialDiseaseRouteIds);
if (CollectionUtils.isNotEmpty(specialDiseaseNodes)) {
for (SpecialDiseaseNode specialDiseaseNode : specialDiseaseNodes) {
SpecialDiseaseNodeVO specialDiseaseNodeVO = new SpecialDiseaseNodeVO();
BeanUtils.copyProperties(specialDiseaseNode, specialDiseaseNodeVO);
if (specialDiseaseNode.getRouteId().equals(id)) {
specialDiseaseNode.setRouteId(specialDiseaseRoute.getId());
} else {
OriginalSpecialDiseaseRoute originalSpecialDiseaseRoute = childSpecialDiseaseRoute.stream().filter(Objects::nonNull).filter(item -> Objects.nonNull(item.getOriginalSpecialDiseaseRouteId()) && specialDiseaseNode.getRouteId().equals(item.getOriginalSpecialDiseaseRouteId())).findFirst().orElse(new OriginalSpecialDiseaseRoute());
specialDiseaseNode.setRouteId(originalSpecialDiseaseRoute.getId());
}
specialDiseaseNodeVO.setId(null);
specialDiseaseNodeVO.setRouteId(specialDiseaseRoute.getId());
specialDiseaseNodeVO.setRouteCheckStatus(null);
specialDiseaseNodeVO.setRouteCheckPerson(null);
specialDiseaseNodeVO.setRouteCheckDate(null);
specialDiseaseNodeVO.setRouteCheckRemark(null);
specialDiseaseNodeVO.setCreateBy(SecurityUtils.getUsername());
specialDiseaseNodeVO.setCreateTime(LocalDateTime.now());
specialDiseaseNodes.add(specialDiseaseNodeVO);
}
int nodeCount = specialDiseaseNodeMapper.insertSpecialDiseaseNodeList(specialDiseaseNodeList);
if (nodeCount < 0) {
log.info("新增主路径节点失败!");
throw new ServiceException("克隆失败!");
}
}
SpecialDiseaseRoutePackage specialDiseaseRoutePackage = new SpecialDiseaseRoutePackage();
specialDiseaseRoutePackage.setRouteId(id);
List<SpecialDiseaseRoutePackage> specialDiseaseRoutePackages = specialDiseaseRoutePackageMapper.selectSpecialDiseaseRoutePackageList(specialDiseaseRoutePackage);
if (CollectionUtils.isNotEmpty(specialDiseaseRoutePackages)) {
specialDiseaseRoutePackages.forEach(item -> {
item.setId(null);
item.setRouteId(specialDiseaseRoute.getId());
item.setCreateBy(SecurityUtils.getUsername());
item.setCreateTime(LocalDateTime.now());
});
int packageCount = specialDiseaseRoutePackageMapper.insertSpecialDiseaseRoutePackageList(specialDiseaseRoutePackages);
if (packageCount < 0) {
log.info("新增服务包失败!");
throw new ServiceException("克隆失败!");
}
SpecialDiseaseTriggerCondition specialDiseaseTriggerCondition = new SpecialDiseaseTriggerCondition();
specialDiseaseTriggerCondition.setRouteId(id);
List<SpecialDiseaseTriggerCondition> specialDiseaseTriggerConditions = specialDiseaseTriggerConditionMapper.selectSpecialDiseaseTriggerConditionList(specialDiseaseTriggerCondition);
if (CollectionUtils.isNotEmpty(specialDiseaseTriggerConditions)) {
specialDiseaseTriggerConditions.forEach(item -> {
item.setId(null);
item.setRouteId(specialDiseaseRoute.getId());
item.setCreateBy(SecurityUtils.getUsername());
item.setCreateTime(LocalDateTime.now());
});
int conditionCount = specialDiseaseTriggerConditionMapper.insertTriggerConditionList(specialDiseaseTriggerConditions);
if (conditionCount < 0) {
log.info("新增触发条件失败!");
throw new ServiceException("克隆失败!");
}
}
}
return AjaxResult.success();
}
/**
* 数据组装
*
* @param specialDiseaseRoute 路径信息
*/
private void extracted(SpecialDiseaseRoute specialDiseaseRoute) {
List<SpecialDiseaseRoute> specialDiseaseRoutes = specialDiseaseRouteMapper.selectCountByName(specialDiseaseRoute.getDepartmentId(), specialDiseaseRoute.getRouteName());
if (CollectionUtils.isNotEmpty(specialDiseaseRoutes)) {
List<SpecialDiseaseRoute> collect = specialDiseaseRoutes.stream().filter(Objects::nonNull).filter(item -> Objects.nonNull(item.getId()) && !specialDiseaseRoute.getId().equals(item.getId())).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(collect)) {
specialDiseaseRoute.setRouteName(specialDiseaseRoute.getRouteName() + "-副本");
extracted(specialDiseaseRoute);
}
}
}
}